这是一个多路选择器的程序
顶层文件
module muxtwo(
input sys_clk,
input sys_rst_n,
input a,
input b,
input sel,
output reg out
);
always @(*)begin
if(!sel)
out=a;
else
out=b;
end
endmodule
测试文件
`timescale 1 ns/ 1 ns
module muxtwo_tb;
reg a;
reg b;
reg sel;
wire out;
reg sys_clk,sys_rst_n ;
initial
begin
a <= 1'b0 ;
b <= 1'b0 ;
sel<=1'b0;
sys_clk <= 1'b0 ;
sys_rst_n <= 1'b0 ;
#100 sys_rst_n <= 1'b1 ;
#1000 $stop;
end
always
begin
#10 sys_clk<=~sys_clk;
end
always @(posedge sys_clk or negedge sys_rst_n)begin
if(!sys_rst_n)begin
a<=0;
b<=0;
end
else begin
a<={$random}%2;
b<={$random}%2;
end
end
always
begin
#50 sel<=~sel;
end
muxtwo muxtwo_uut(
.sys_clk (sys_clk),
.sys_rst_n (sys_rst_n),
.a (a),
.b (b),
.sel(sel),
.out (out)
);
endmodule
综合结果:
仿真结果:
总结:自己在将近一个多月没有用verilog时,语法忘记了很多,自己慢慢的找到写程序的感觉。