资源描述:
《西北工业大学数字电子技术基础实验报告实验.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、数字电子技术基础第一次实验报告一、描述Modelsim软件使用详细步骤1、打开modelsim软件,在菜单栏点击file->new->project,然后输入创建的名称,选择文件位置。2、在项目中创建编写模块和测试模块文件,并均选择Verilog语言。(注意工程名和测试文件的module名保持一致)3、用文本编辑器正确编写源文件和测试文件。4、CompileAll,编译源文件和测试文件(如有错误修改后,重新编译)。1、编译无误后在Library中选择work库,先选中testbench,然后在菜单中选择simulate。6、右击选择addwave.7、选择合
2、适的时间间隔之后在快捷菜单中点击run进行仿真,分析波形。二、题目代码以及波形分析1、Figure2.72①编写模块源码moduleshared(a,b,c,d,m,s1,s0);inputa,b,c,d,m;outputs1,s0;wirew1,w2;mux2to1U1(a,c,m,w1);mux2to1U2(b,d,m,w2);adderU3(w1,w2,s1,s0);endmodulemodulemux2to1(x1,x2,s,f);inputx1,x2,s;outputf;assignf=(~s&x1)
3、(s&x2);endmodulemodulea
4、dder(a,b,s1,s0);inputa,b;outputs1,s0;assigns1=a&b;assigns0=a^b;endmodule②测试模块`timescale1ns/1psmoduletb_shared;rega_test;regb_test;regc_test;regd_test;regm_test;wires1_test;wires0_test;initialm_test=0;always#80m_test=~m_test;initialbegina_test=0;b_test=0;c_test=0;d_test=0;#20a_test=
5、0;b_test=1;c_test=0;d_test=0;#20a_test=1;b_test=0;c_test=0;d_test=0;#20a_test=1;b_test=1;c_test=0;d_test=0;#20a_test=0;b_test=0;c_test=0;d_test=0;#20a_test=0;b_test=0;c_test=0;d_test=1;#20a_test=0;b_test=0;c_test=1;d_test=0;#20a_test=0;b_test=0;c_test=1;d_test=1;endsharedUUT_shared
6、(.a(a_test),.b(b_test),.c(c_test),.d(d_test),.m(m_test),.s1(s1_test),.s0(s0_test));endmodule③仿真后的波形截图④对波形的分析本例是由两个二选一多路选择器和一个两位二进制数加法器构成的电路。分析上图波形,当m信号为0时,加法器计算a和b的和;当m信号为1时,加法器计算c和d的和。所以实现了目标功能。2、Figure2.40.①编写模块源码modulemultiplexer(x1,x2,s,f);inputx1,x2,s;outputf;assignf=(~s&x1)
7、(
8、s&x2);endmodule②测试模块`timescale1ns/1psmoduletb_multiplexer;regx1_test;regx2_test;regs_test;wiref_test;initials_test=0;always#80s_test=~s_test;initialbeginx1_test=0;x2_test=0;#20x1_test=1;x2_test=0;#20x1_test=0;x2_test=1;#20x1_test=1;x2_test=1;#20x1_test=0;x2_test=0;#20x1_test=1;x2_t
9、est=0;#20x1_test=0;x2_test=1;#20x1_test=1;x2_test=1;endmultiplexerUUT_multiplexer(.x1(x1_test),.x2(x2_test),.s(s_test),.f(f_test));endmodule③仿真后的波形截图④对波形的分析本例目的是令s为控制信号,实现二选一多路选择器。分析波形图可以知道,s为0时,f输出x1信号;s为1时,f输出x2信号。所以实现了目标功能。3、Figure2.42.①编写模块源码moduleexample5(x1,x2,s,f);inputx1,x2
10、,s;outputf;regf;always@(x1