VerilogMSThingy

Posted on March 4, 2010, 7:55 pm UTC by neuro (about 1 year ago)

Code (highlighted for Verilog)

  1. module ckt(btn, clk, a, b, c, d, e, f, g, an, swtch, led);
  2. input [3:0] btn;
  3. input [7:0] swtch;
  4. input clk;
  5. output a, b, c, d, e, f, g;
  6. output [3:0] an;
  7. output [7:0] led;
  8. reg [7:0] led;
  9. reg a, b, c, d, e, f, g, swstate = 0;
  10. reg [2:0] cstate, nstate;
  11. reg [3:0] an;
  12. always @(posedge clk)
  13.         begin
  14.                 led=swtch;
  15.                 if (swstate==0)
  16.                         begin
  17.                                 an=15;
  18.                         end
  19.         end
  20. always @(swtch)
  21.         begin
  22.                 swstate=1;
  23.                 case(swtch)
  24.                         8'b00000000: begin
  25.                                                         an[0] = 1; an[1] = 0;
  26.                                                          a=0; b=0; c=0; d=0; e=0; f=0; g=1;//Switch 1 is on
  27.                                                         end
  28.                         8'b00010000: begin
  29.                                                         an[0] = 1; an[1] = 0;
  30.                                                          a=1; b=0; c=0; d=1; e=1; f=1; g=1;//Switch 1 is on
  31.                                                          end
  32.                         8'b00100000: begin
  33.                                                         an[0] = 1; an[1] = 0;
  34.                                                          a=0; b=0; c=1; d=0; e=0; f=1; g=0;//Switch 1 is on
  35.                                                          end
  36.                         8'b00110000: begin
  37.                                                         an[0] = 1; an[1] = 0;
  38.                                                          a=0; b=0; c=0; d=0; e=1; f=1; g=0;//Switch 1 is on
  39.                                                          end
  40.                         8'b01000000: begin
  41.                                                         an[0] = 1; an[1] = 0;
  42.                                                          a=1; b=1; c=0; d=1; e=1; f=0; g=0;//Switch 1 is on
  43.                                                          end
  44.                         8'b01010000: begin
  45.                                                         an[0] = 1; an[1] = 0;
  46.                                                          a=0; b=1; c=0; d=0; e=1; f=0; g=0;//Switch 1 is on
  47.                                                         end
  48.                         8'b01100000: begin
  49.                                                         an[0] = 1; an[1] = 0;
  50.                                                          a=0; b=1; c=0; d=0; e=0; f=0; g=0;//Switch 1 is on
  51.                                                         end
  52.                         8'b01110000: begin
  53.                                                         an[0] = 1; an[1] = 0;
  54.                                                          a=0; b=0; c=0; d=1; e=1; f=1; g=1;//Switch 1 is on
  55.                                                          end
  56.                         8'b10000000: begin
  57.                                                         an[0] = 1; an[1] = 0;
  58.                                                          a=0; b=0; c=0; d=0; e=0; f=0; g=0;//Switch 1 is on
  59.                                                          end
  60.                         8'b10010000: begin
  61.                                                                 an[0] = 1; an[1] = 0;
  62.                                                          a=0; b=0; c=0; d=1; e=1; f=0; g=0;//Switch 1 is on
  63.                                                          end
  64.                         8'b10100000: begin
  65.                                                         an[1] = 1;
  66.                                                          a=1; b=0; c=0; d=1; e=1; f=1; g=1;//Switch 1 is on
  67.                                                          an[0] = 0;
  68.                                                          a=0; b=0; c=0; d=0; e=0; f=0; g=1;//Switch 1 is on
  69.                                                          //an[1] = 0;
  70.                                                          end
  71.                         8'b10110000: begin
  72.                                                         an[0] = 0; an[1] = 0;
  73.                                                          a=1; b=1; c=1; d=1; e=1; f=1; g=1;//Switch 1 is on
  74.                                                         end
  75.                         8'b11000000: begin
  76.                                                         an[0] = 0; an[1] = 0;
  77.                                                          a=1; b=1; c=1; d=1; e=1; f=1; g=1;//Switch 1 is on
  78.                                                          end
  79.                         8'b11010000: begin
  80.                                                         an[0] = 0; an[1] = 0;
  81.                                                          a=1; b=1; c=1; d=1; e=1; f=1; g=1;//Switch 1 is on
  82.                                                          end
  83.                         8'b11100000: begin
  84.                                                         an[0] = 0; an[1] = 0;
  85.                                                          a=1; b=1; c=1; d=1; e=1; f=1; g=1;//Switch 1 is on
  86.                                                          end
  87.                         8'b11110000: begin
  88.                                                                 an[0] = 0; an[1] = 0; a=1; b=1; c=1; d=1; e=1; f=1; g=1;//Switch 1 is on
  89.                                                          end
  90.                         default: begin
  91.                                                         an = 15; swstate = 0;
  92.                                                 end
  93.                 endcase
  94.         end
  95. always @(btn or cstate)
  96. case (btn)
  97. 4'b1000: nstate=3; // Button 3 pressed
  98. 4'b0100: nstate=2; // Button 2 pressed
  99. 4'b0010: nstate=1; // Button 1 pressed
  100. 4'b0001: nstate=0; // Button 0 pressed
  101. 4'b0000: nstate=cstate; // No button pressed
  102. default: nstate=7; // No button pressed yet or multiple
  103. // buttons pressed
  104. endcase
  105. always @(posedge clk)
  106. case (cstate)
  107. 3: begin // Button 3 pressed
  108. a=0; b=0; c=0; d=0; e=1; f=1; g=0;
  109. end
  110. 2: begin // Button 2 pressed
  111. a=0; b=0; c=1; d=0; e=0; f=1; g=0;
  112. end
  113. 1: begin // Button 1 pressed
  114. a=1; b=0; c=0; d=1; e=1; f=1; g=1;
  115. end
  116. 0: begin // Button 0 pressed
  117. a=0; b=0; c=0; d=0; e=0; f=0; g=1;
  118. end
  119. 7: begin // No button pressed yet or multiple buttons pressed
  120. a=1; b=1; c=1; d=1; e=1; f=1; g=1;
  121. end
  122. endcase
  123. endmodule