FPGA进行一个多路选择器的编写,附带testbench First Post: 2022-06-23 Last Update: 2022-06-24
multiplexer.v文件内容如下: 1 2 3 4 5 6 7 8 9 10 module multiplexer ( input a,b,sel, output reg out );always @(a or b or sel) if (!sel) out = a; else out = b;endmodule
tb_multiplexer文件(testbench)内容如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 `timescale 1ns/1ns module tb_multiplexer ();reg a; reg b;reg sel;wire out; initial begin a = 1'b0 ; b = 1'b0 ; sel = 1'b0 ; end always #10 a <= {$random } % 2 ; always #10 b <= {$random } % 2 ; always #10 sel <= {$random } % 2 ; multiplexer multiplexer_init ( .a (a), .b (b), .sel (sel), .out (out) );endmodule
有趣的一点是,第一个模组里面的reg实际上并没有用到.这个可以通过查看RTL Viewer可以看见.非常贴心的给优化掉了.具体内容可以查看 Verilog中assign和always的关键词详解 .