首页 > 编程知识 正文

4选1数据选择器设计,双4选1数据选择器原理图

时间:2023-05-05 01:00:19 阅读:154366 作者:3646

实验一:

教材《数字逻辑基础与Verilog设计》 P112 .图4.28-4选1多路复用器

4选择1复用器的另一种描述(可以用If-else语句描述4选择1复用器) ) )。

本示例定义4位向量w,而不是单个信号w0、w1、w2和w3。 并且s的四个不同的值被定义为十进制而不是二进制。

实验设计代码:

modulemux4to1(w,s,f ); input [0:3]w; input [1:0]s; 输出结果f; always@(w,s ) if ) s==0) f=w[0]; ELSEif(s==1) f=w[1]; ELSEif(s==2) f=w[2]; else f=w[3]; endmodule 测试代码:

module tb_mux4to1; reg [0:3] w; reg[1:0] s; wire f; Mux4to1mymux4t01(w,s,f ); always # 10 w[0]=~ w[0]; always # 20 w[1]=~ w[1]; always # 40 w[2]=~ w[2]; always # 80 w[3]=~ w[3]; initialbegins=1'b0; w=4'h0; #160 $stop; endalways #10 s=s 1; 结束模块

左图按名字写,右图按顺序写

为了通过为输入分配值来验证输出是否正确,可以首先为w、s分配值,然后根据模拟波形图来验证f的值,因此需要编写验证模拟波形图正确性的测试代码

写测试代码时,请注意这里的模块实例化。 语法结构如下。

模块名称是已定义的其他模块的模块名称,实例名称是在此模块中定义的新名称。 端口连接是指连接当前模块实例化的模块中包含的端口,有顺序连接和按名称连接两种方法。

顺序连接对于初学者来说很直观、简单,连接到实例的信号必须与模块声明时端口列表中目标端口的位置一致。

另外,还将连接到实例化模块的输入端口的信号定义为reg,将连接到实例化模块的输出端口的信号定义为wire,以及在实例化模块中存在双向端口这是必须遵守的语法要求。

eg:按顺序连接实例化端口

该代码包含两个模块,第二个模块是4选择的数据选择器,只给出了模块定义和端口声明部分,没有给出内部逻辑门调用。 第一个模块是测试模块Test,它在模块中调用四个数据选择器并将其重命名为mymux。 连接顺序按照以下模块MUX4x1中定义的顺序依次连接。

按名称连接eg:实例化端口

在本示例中,将端口顺序调整为与原始MUX4x1端口列表中的顺序列表不同,并将En_信号放在第六个,而不是最后一个。 另外,为了表示连接信号的名称与本来定义的端口号无关,这里采用了没有意义的字母abcdefg作为Test模块中的连接线。

实验结果截图:

根据模拟,当s为00时,f=w[0],对应波形相同,当s为01时,f=w[1],当s为10时,f=w[2],当s为11时,f=w[3]。

实验视频:

4选择1复用器

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。