二选一多路选择器
Verilog
编码:
module mux_two(
input clk,
input a,
input b,
input sel,
output out
);
assign out = sel?a:b;
endmodule
仿真波形:
![](https://img-blog.csdnimg.cn/direct/915fa745e9394b9aa709c7b98abe3f7a.png)
将 assign out = sel?a:b;替换成 always
always@(posedge clk)
begin
if(sel)
begin
out <= a;
end
else
begin
out <= b;
end
end
仿真波形:
![](https://img-blog.csdnimg.cn/direct/a76aee4b2ae54185801010c09042da8f.png)
仿真图可以看出来 out 在 sel 转变后,输出会延迟一个 clk
因为 always@(posedge clk)当 sel 转变后这个 clk 回去做判断,下一个 clk 才会输出相应的 out
因为 always@(posedge clk)当 sel 转变后这个 clk 回去做判断,下一个 clk 才会输出相应的 out