Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* V_5_10
- Funkció: A BTN0 (reset jel) gomb hatására a SW0-SW7 kapcsolókkal beállíthatott értékek megjelennek a
- jobb oldali hétszegmenses kijelzőn. A BTN0 gomb felengedése után ezek az értékek kb. másodpercenként
- shiftelődnek egy visszacsatolt balra shiftelő regiszterben, miközben az aktuális értékek megjelennek a
- hétszegmenses kijelzőn. A hálózat órajele az FPGA panel 50 MHz-es órajele. A shiftelést egy kb.
- másodpercenként érkező, 1 órajel szélességű engedélyező jel ütemezi. Ezt a jelet is a hálózat állítja elő.
- */
- //Verilog Module
- `timescale 1ns / 1ps
- module topmod(
- input clk,
- input [7:0] sw17,
- input btn0,
- output [3:0] AN,
- output reg [6:0] SEG7
- );
- reg [26:0] cntr;
- wire en;
- always @(posedge clk)
- if (btn0 | en)
- cntr <= 0;
- else cntr <= cntr + 1;
- assign en = ( cntr == 49999999 );
- reg [7:0] shr;
- always @(posedge clk)
- if (btn0) begin
- shr <= sw17;
- end
- else if (en) begin
- shr <= {shr[6:0],shr[7]};
- end
- reg cntr2;
- wire en2;
- always @(posedge clk)
- if (btn0 | en2)
- cntr2 <= 0;
- else cntr2 <= cntr2 + 1;
- assign en2 = (cntr2 == 1500000);
- wire [3:0] num = en2 ? shr[7:4] : shr[3:0];
- assign AN = en2 ? 4'b1101 : 4'b1110;
- always @(*)
- case (num)
- 4'b0001 : SEG7 = 7'b1111001; // 1
- 4'b0010 : SEG7 = 7'b0100100; // 2
- 4'b0011 : SEG7 = 7'b0110000; // 3
- 4'b0100 : SEG7 = 7'b0011001; // 4
- 4'b0101 : SEG7 = 7'b0010010; // 5
- 4'b0110 : SEG7 = 7'b0000010; // 6
- 4'b0111 : SEG7 = 7'b1111000; // 7
- 4'b1000 : SEG7 = 7'b0000000; // 8
- 4'b1001 : SEG7 = 7'b0010000; // 9
- 4'b1010 : SEG7 = 7'b0001000; // A
- 4'b1011 : SEG7 = 7'b0000011; // b
- 4'b1100 : SEG7 = 7'b1000110; // C
- 4'b1101 : SEG7 = 7'b0100001; // d
- 4'b1110 : SEG7 = 7'b0000110; // E
- 4'b1111 : SEG7 = 7'b0001110; // F
- default : SEG7 = 7'b1000000; // 0
- endcase
- endmodule
- //Verilog Test Fixture
- module tb_topmod;
- // Inputs
- reg clk;
- reg [7:0] sw17;
- reg btn0;
- // Outputs
- wire AN4;
- wire [6:0] SEG7;
- // Instantiate the Unit Under Test (UUT)
- topmod uut (
- .clk(clk),
- .sw17(sw17),
- .btn0(btn0),
- .AN(AN),
- .SEG7(SEG7)
- );
- initial begin
- // Initialize Inputs
- clk = 0;
- sw17 = 01110011;
- btn0 = 1;
- // Wait 100 ns for global reset to finish
- #100;
- btn0 <= 0;
- // Add stimulus here
- end
- always #10 clk <= ~clk;
- endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement