专 业:计算机科学与技术班 级:计实1001学 号:U201014488姓 名:王宸敏电 话:邮 件:1428163209@完成日期:2012-05-28 周一晚上指导教师:吴非
实验报告
一、实验
Verilog电路设计与仿真
二、实验目的
学习掌握用Verilog进行组合电路设计和时序逻辑电路设计
了解如何对设计的电路进行综合和仿真
三、实验内容
对上课讲的3-8译码器进行仿真;
设计MUX4×1多路选择器,并利用设计完成的MUX4×1多路选择器模块,编写16×1多路选择器程序。
描述多数逻辑电路行为。输入N(N≥12)位向量。如果其中1的数量超过0的数量,输出设置为1。当Data_Ready信号为1时,才对输入数据进行检查。
四、实验记录
1. 3-8译码器
1)设计说明
输入端口:in(3位向量),g1, g2a, g2b
输出端口:out(8位向量、寄存器类型)
逻辑功能分析:对输入a、b、c的值进行译码,即确定输出端out[0]~out[7]中的哪一个输出端变为有效。当g1为高电平、g2a和g2b为低电平时,电路正常工作;当g1=X、g2a=1、g2b=X,g1=X、g2a=X、g2b=1或g1=0、g2a=X、g2b=X时,输出端的每一位均为1。功能表如下:
选 通 输 入二进制输入端译 码 输 出 端g1g2ag2bcbay0y1y2y3y4y5y6y7X1XXXX11111111XX1XXX111111110XXXXX1111111110000001111111100001101111111000101101111110001111101111100100111101111001011111101110011011111101100111111111102)详细代码(带注释)
module decoder38(out, in, g1, g2a, g2b); //38译码器
output[7:0] out; //八位输出
input[2:0] in; //三位输入
input g1, g2a, g2b; //选通输入
reg[7:0] out;
always @(in or g1 or g2a or g2b)
begin
if(g1==1 && g2a==0 && g2b==0)
//只有在g1 g2a g2b为100时产生输入
case(in) //输入各选项,以及对应的输出
3'd0:out=8'
3'd1:out=8'
3'd2:out=8'
3'd3:out=8'
3'd4:out=8'
3'd5:out=8'
3'd6:out=8'
3'd7:out=8'
endcase
end
endmodule
仿真结果
2. 16×1多路选择器程序
设计说明
16×1多路选择器由5个4×1多路选择器组成。电路的组成原理为:把16个输入的依次分为4组,记为X、Y、Z、W,每组4个输入。选择信号可表示为4位二进制数,记低两位为A,高两位为B。先使用A分别对X、Y、Z、W四组输入进行4选1操作,选出X1、Y1、Z1、W1。再使用B对X1、Y1、Z1、W1进行4选1操作,即可得到结果Z。
i) 16选1模块(MUX16_1)
输入端口:[15:0]in [3:0]sel
输出端口:out
逻辑功能分析:根据选择信号,从16个输入中选出一个信号作为输出。
ii) 4选1模块(MUX16_1)
输入端口:in0,in1,in2,in3,[1:0]sel
输出端口:out
逻辑功能分析:根据选择信号,从4