最新Verilog数字电路设计实验报告.docx
《最新Verilog数字电路设计实验报告.docx》由会员分享,可在线阅读,更多相关《最新Verilog数字电路设计实验报告.docx(46页珍藏版)》请在冰豆网上搜索。
最新Verilog数字电路设计实验报告
15.通过VisualFoxpro的视图,不仅可以查询数据表,还可以__________数据表。
settalkon
5电线
28、TCP/IP体系结构中与ISO-OSI参考模型的1、2层对应的是哪一层(A)
9、计算机网络的基本分类方法主要有:
根据网络所覆盖的范围、根据网络上主机的组网方式,另一种是根据__信息交换方式____。
第5章程序设计基础
input"请输入圆环的内半径:
"tor1
两表的内容分别如下:
B.类是实例对象的抽象
D.以上说法均不正确
Verilog数字电路设计
实验名称
Verilog数字电路设计
班级
130324
姓名
张先炳13031205
同组者
廖瑞13031191
自动化与电气工程学院
2016年4月25日
实验一简单组合逻辑设计
1实验目的
1、掌握基本组合逻辑电路的实现方法。
2、初步了解两种基本组合逻辑电路的生成方法。
3、学习测试模块的编写。
4、通过综合和布局布线了解不同层次仿真的物理意义。
2实验设备
安装Modelsim-6.5c的PC机。
3实验内容
描述一个可综合的数据比较器,比较数据a、b的大小,若相同,则给出结果1,否则给出结果0。
4实验代码
模块源代码:
modulecompare(equal,a,b);
inputa,b;
outputequal;
assignequal=(a==b)?
1:
0;
endmodule
测试代码:
`timescale1ns/1ns;
`include"compare.v"
modulecompare_tb;
rega,b;
wireequal;
initial
begin
a=0;
b=0;
#100a=0;b=1;
#100a=1;b=1;
#100a=1;b=0;
#100a=0;b=0;
#100$stop;
#100a=0;b=1;
end
comparem(.equal(equal),.a(a),.b(b));
endmodule
5仿真结果
选作一:
设计一个字节的比较器
1实验要求
比较两个字节的大小,如a[7:
0]大于b[7:
0],则输出高电平,否则输出低电平;并改写测试模型,使其能进行比较全面的测试。
2模块代码
modulecompare_8bit(result,a,b);
input[7:
0]a,b;
outputresult;
assignresult=(a>b)?
1:
0;
endmodule
3测试代码
`timescale1ns/1ns
`include"compare_8bit.v"
moduletest;
reg[7:
0]a,b;
wireresult;
initial
begin
a=8'd0;
b=8'd0;
#100a=8'd6;b=8'd5;
#100a=8'd9;b=8'd9;
#100a=8'd12;b=8'd15;
#100$stop;
end
compare_8bitm(.result(result),.a(a),.b(b));
endmodule
4仿真结果
实验二简单分频时序逻辑电路的设计
1实验目的
1、掌握最基本组合逻辑电路的实现方法。
2、学习时序电路测试模块的编写。
3、学习综合和不同层次的仿真。
2实验设备
安装Modelsim-6.5c的PC机。
3实验内容
用always块和@(posedgeclk)或@(negedgeclk)的结构表述一个1/2分频器的可综合模型,观察时序仿真结果。
4实验代码
模块代码:
modulehalf_clk(reset,clk_in,clk_out);
inputclk_in,reset;
outputclk_out;
regclk_out;
always@(posedgeclk_in)
begin
if(!
reset)clk_out=0;
elseclk_out=~clk_out;
end
endmodule
测试代码:
`timescale1ns/100ps
`defineclk_cycle50
moduletext;
regclk,reset;
wireclk_out;
always#`clk_cycleclk=~clk;
initial
begin
clk=0;
reset=1;
#10reset=0;
#110reset=1;
#100000$stop;
end
half_clkm(.reset(reset),.clk_in(clk),.clk_out(clk_out));
endmodule
5仿真结果
选作二:
七段数码管译码电路
1实验要求
设计一个七段数码管译码电路。
2模块代码
moduleqiduanma(in,out);
input[3:
0]in;
output[6:
0]out;
reg[6:
0]out;
always@(in)
begin
case(in)
4'b0000:
out=7'b1111110;
4'b0001:
out=7'b0110000;
4'b0010:
out=7'b1101101;
4'b0011:
out=7'b1111011;
4'b0100:
out=7'b0110011;
4'b0101:
out=7'b1011011;
4'b0110:
out=7'b0011111;
4'b0111:
out=7'b1110000;
4'b1000:
out=7'b1111111;
4'b1001:
out=7'b1110011;
4'b1010:
out=7'b0001101;
4'b1011:
out=7'b0011001;
4'b1100:
out=7'b0100011;
4'b1101:
out=7'b1001011;
4'b1110:
out=7'b0001111;
4'b1111:
out=7'b0000000;
endcase
end
endmodule
3测试代码
`timescale1ns/1ns;
`include"qiduanma.v"
moduletest;
reg[3:
0]in;
wire[6:
0]out;
integert;
initial
begin
in=4'b0000;
for(t=0;t<4'b1111;t=t+1)
#100in<=in+1;
end
qiduanmam(.in(in),.out(out));
endmodule
4仿真结果
实验三:
利用条件语句实现计数分频时序电路
1实验目的
1、掌握条件语句在简单时序模块设计中的使用。
2、学习在Verilog模块中应用计数器。
3、学习测试模块的编写、综合和不同层次的仿真。
2实验设备
安装Modelsim-6.5c的PC机。
3实验内容
仿真一个可综合风格的分频器,将10MB的时钟分频为500KB的时钟,定义一个计数器,原理同1/2分频器一样,只不过分频变为1/20。
4实验代码
模块代码:
modulefdivision(RESET,F10M,F500K);
inputF10M,RESET;
outputF500K;
regF500K;
reg[7:
0]j;
always@(posedgeF10M)
if(!
RESET)
begin
F500K<=0;
j<=0;
end
else
begin
if(j==9)
begin
j<=0;
F500K<=~F500K;
end
else
j<=j+1;
end
endmodule
测试代码:
`timescale1ns/100ps
`defineclk_cycle50
moduletest_fdivision;
regF10M,RESET;
wireF500K_clk;
always#`clk_cycleF10M=~F10M;
initial
begin
RESET=1;
F10M=0;
#100RESET=0;
#100RESET=1;
#10000$stop;
end
fdivisionm(.RESET(RESET),.F10M(F10M),.F500K(F500K_clk));
endmodule
5仿真结果
6实验分析
书中程序if(j==19)段应改为if(j==9)
选作三:
设计一个单周期形状的周期波形。
1实验要求
利用10MHZ的时钟,设计一个单周期形状的周期波形。
2模块代码
moduleexp3(RESET,F10M,F_OUT);
inputF10M,RESET;
outputF_OUT;
regF_OUT;
reg[15:
0]j;
always@(posedgeF10M)
if(!
RESET)
begin
F_OUT<=0;
j<=0;
end
else
begin
j<=j+1;
case(j)
199:
F_OUT<=1;
299:
F_OUT<=0;
499:
j<=0;
endcase
end
endmodule
3测试代码
`timescale1ns/100ps
`defineclk_cycle50
moduletest_exp3;
regF10M,RESET;
wireF;
always#`clk_cycleF10M=~F10M;
initial
begin
RESET=1;
F10M=0;
#100RESET=0;
#100RESET=1;
#1000000$stop;
end
exp3m2(.RESET(RESET),.F10M(F10M),.F_OUT(F));
endmodule
4仿真结果
实验四:
用always块实现较复杂的组合逻辑
1实验目的
1、掌握用always实现较大组合逻辑电路的方法。
2、进一步了解assign与always两种组合电路实现方法的区别和注意点。
3、学习测试模块中随机数的产生和应用。
4、学习综合不同层次的仿真,并比较结果。
2实验设备
安装Modelsim-6.5c的PC机。
3实验内容
设计一个简单的指令译码电路,该电路通过对指令的判断,对输入数据执行相应的操作,包括加、减、与、或和求反,并且无论是指令作用的数据还是指令本身发生变化,都有要作出及时的反应。
4实验代码
模块代码:
//--------------------alu.v-------------------------
`defineplus3'd0
`defineminus3'd1
`