Verilog实现简单的8路选择器

Posted by Harid十一月 - 6 - 2010 Leave comments   515 views 

8路选择器是数字电路里一个非常简单的电路了,功能是通过一个地址端对8路输入进行选择输出,输出其中的 1 路。下面的实现中每路输入数据与输出数据均为4位2进制数,当选择开关或输入数据发生变化时,输出数据也相应地变化。

8路选择器的集成芯片74LS152的引脚分布图如右图,74LS152其中D0~D7是8路数据输入,W是一路输出,A、B、C是地址端。

真值表如下

真值表

逻辑图:

逻辑图

Verilog实现代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
module mux_8(addr, in1, in2, in3, in4, in5,in6,in7,in8,mout,ncs);
input [2:0] addr; 
input [3:0] in1,in2,in3,in4,in5,in6,in7,in8;
input ncs; 
output [3:0] mout; 
reg [3:0] mout;
always @(addr or in1 or in2 or in3 or in4 or in5 or in6 or in7 or in8 or ncs)
begin
if(!ncs)
case(addr)
3'b000: mout = in1; 
3'b001: mout = in2;
3'b010: mout = in3;
3'b011: mout = in4; 
3'b100: mout = in5; 
3'b101: mout = in6; 
3'b110: mout = in7; 
3'b111: mout = in8; 
endcase
else
mout = 0;
end
endmodule

测试向量:

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
`timescale 1ns/1ns
module test;
wire[3:0] mout;
reg [3:0] in1,in2,in3,in4,in5,in6,in7,in8;
reg [2:0] addr; 
reg ncs;
initial
begin
ncs=0; //在初始化模块里将使能信号置为0,让选择器正常工作
in8={$random}%16; //使用系统任务$random产生一个0至15之间的数
in1={$random}%16;
in2={$random}%16;
in3={$random}%16;
in4={$random}%16;
in5={$random}%16;
in6={$random}%16;
in7={$random}%16;
addr=3'b000; 
repeat(5)   //重复下面的语句块5次,赋5次值
begin
#10 in8={$random}%16;
in1={$random}%16;
in2={$random}%16;
in3={$random}%16;
in4={$random}%16;
in5={$random}%16;
in6={$random}%16;
in7={$random}%16;
addr=addr+1;
end
#10 $stop;
end
mux_8 example(.addr(addr),.in1(in1),.in2(in2),.in3(in3),.in4(in4),.in5(in5),.in6(in6),.in7(in7),.in8(in8),.mout(mout),.ncs(ncs));
endmodule

ModelSim仿真结果:

仿真波形

   声明:本文采用 BY-NC-SA 协议进行授权 | 星期九
   原创文章转载请注明:转自《Verilog实现简单的8路选择器

分享本文: 腾讯微博 QQ空间 人人网 百度空间 开心网 新浪微博 Google Reader 豆瓣
Comments(7) Leave comments
  1. Gravatar
    天印行健 Google Chrome Google Chrome 7.0.517.41 Linux Linux

    唉,都拿来骗小孩子;选择语句最好还是加上default,不管是不是产生了寄存器,都是要去避免的 :smile:

    • Gravatar Harid  @  十一月 7th, 2010 at 23:53 replied.

      @天印行健, 嗯 ,对对,最好是有default。

      • Gravatar 天印行健  @  十一月 8th, 2010 at 00:32 replied.  | #2

        @Harid,
        我实验的时候就是不小心把default注释掉了啊,唉,可怜那时候还没看书,百思不得其解,搞了一上午... :cry:

  2. Gravatar
    学夫子 Google Chrome Google Chrome 7.0.517.44 Windows Windows XP

    我最头疼就是电学,纯支持,呵呵 :!: :!:

  3. Gravatar
    WordPress啦 Internet Explorer Internet Explorer 8.0 Windows Windows XP

    这个有点复杂,一般人看不懂

  4. Gravatar
    博客之家 Internet Explorer Internet Explorer 6.0 Windows Windows XP

    不太懂你说的这些

5 + 3 =  (required)
 疑问 鼓掌 难过 呲牙 强 微笑 快哭了 坏笑 汗 奋斗 撇嘴 OK 偷笑 委屈 尴尬 傲慢 握手 玫瑰 胜利 大哭 抱拳
启用云输入法:      

NOTICE1: You should type some Chinese word (like “你好”) in your comment to pass the spam-check, thanks for your patience!

NOTICE2: 请申请gravatar头像(http://en.gravatar.com),木有头像的会显示为“小怪物”头像,将难以通过审核!

NOTICE3: 如果您能消除一下评论框旁边的邻居的寂寞的话,Harid将不胜感激,你懂的!^_^