硬件描述语言实验报告Word文档格式.docx
- 文档编号:22468295
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:33
- 大小:2.96MB
硬件描述语言实验报告Word文档格式.docx
《硬件描述语言实验报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《硬件描述语言实验报告Word文档格式.docx(33页珍藏版)》请在冰豆网上搜索。
);
regclock;
initial
clock<
=0;
always
begin
#30clock<
=1;
#10clock<
end
周期为40个时间单位的时钟信号仿真波形截图
验证说明:
可以由图中看出该时钟产生占空比为25%的时钟波形。
2实验2
2.1实验内容
设计一个1位的二选一多路选择器
方法一:
使用门级描述实现
方法二:
使用逻辑表达式实现
方法三:
使用if条件语句实现
2.2实验步骤
方法一使用门级语言实现:
modulemul21_1(
inputa,
inputb,
inputsel,
outputout);
wirea1,a2,unsel;
not(unsel,sel);
and(a1,unsel,a);
and(a2,sel,b);
or(out,a1,a2);
方法二使用逻辑表达式实现
modulemul21_2(
outputout);
regout;
always@(aorborsel)
assignout=sel?
b:
a;
end
方法三使用if表达式实现
modulemul21_3(
always@(aorborsel)
begin
if(sel)
out=b;
else
out=a;
2.3结果分析
modulemul21_1_tb();
rega;
regb;
regsel;
wireout;
mul21_1abc11(a,b,sel,out);
initial
a=1'
b0;
b=1'
sel=1'
#5sel=1'
b1;
#5a=1'
Endmodule
使用门级电路实现2选1多路选择器
方法二使用逻辑表达式实现:
modulemul21_2_tb();
rega,b,sel;
mul21_2MUX(a,b,sel,out);
initial
begina=1'
如图,使用逻辑表达式实现2选1多路选择器
方法三使用if表达式
modulemul21_3_tb();
wireout;
mul21_3MUX(a,b,sel,out);
如图是使用if表达式得到的2选1多路选择器
3实验3
3.1实验内容
设计一个1位的四选一多路选择器
使用二选一多路选择器模块进行搭建
3.2实验步骤
modulemul21(
3.3结果分析
`timescale1ns/1ps
modulemux41_tb();
rega,b,c,d,sel0,sel1;
mul21i1(a,b,sel0,out1);
mul21i2(c,d,sel0,out2);
mul21i3(out1,out2,sel1,out);
c=1'
d=1'
sel0=1'
sel1=1'
#5sel0=1'
#5b=1'
如图,用三个2选一搭建了一位四选一数据选择器
4实验4
4.1实验内容
设计一个4位二选一多路选择器
使用case语句实现
4.2实验步骤
modulemux421(
inputwire[3:
0]a,
0]b,
inputwiresel,
outputreg[3:
0]out);
always@(aorborsel)
case(sel)
1'
b0:
b1:
default:
out=4'
bx;
endcase
4.3结果分析
modulemux421_tb();
reg[3:
0]a;
0]b;
regsel;
wire[3:
0]out;
mux421MUX(a,b,sel,out);
a=4'
b0000;
b=4'
#5a=4'
b1100;
#5b=4'
b0101;
b1000;
b1110;
#5a=12;
#5b=13;
用case语句设计一个4位2选1数据选择器
当sel=1时,out=b,当sel=0时,out=a。
5实验5
5.1实验内容
使用case语句设计八功能的算术运算单元(ALU),其输入信号a和b均为4位,输入功能选择信号select为3位,输出信号out为5位。
算术运算单元ALU所执行的操作与select信号有关。
5.2实验步骤
modulealu8(
inputwire[2:
0]sel,
0]a,
inputwire[3:
outputreg[4:
always@(aorborsel)
3'
b000:
out=a;
b001:
out=a+b;
b010:
out=a-b;
b011:
out=a/b;
b100:
out=a%b;
b101:
out=a*b;
b110:
out=a<
<
1;
b111:
out=a>
>
out=5'
bxxxxx;
5.3结果分析
modulealu8_tb();
reg[2:
0]sel;
0]b;
wire[4:
0]out;
alu8ALU(sel,a,b,out);
sel=3'
b000;
#5sel=3'
b100;
b101;
b1111;
使用case语句设计8功能ALU
当sel选择不同值时,out等于不同运算结果,即实现了8功能ALU。
6实验6
6.1实验内容
对实验5进行板级验证
通过板子上的码拨开关输入操作数,自行设计拨码开关的控制逻辑,也可利用板子上的其它控制资源(如按钮等)
将运算结果显示到数码管上
6.2实验步骤
管脚约束:
set_propertyIOSTANDARDLVCMOS33[get_ports{a[3]}]
set_propertyIOSTANDARDLVCMOS33[get_ports{a[2]}]
set_propertyIOSTANDARDLVCMOS33[get_ports{a[1]}]
set_propertyIOSTANDARDLVCMOS33[get_ports{a[0]}]
set_propertyIOSTANDARDLVCMOS33[get_ports{b[3]}]
set_propertyIOSTANDARDLVCMOS33[get_ports{b[2]}]
set_propertyIOSTANDARDLVCMOS33[get_ports{b[1]}]
set_propertyIOSTANDARDLVCMOS33[get_ports{b[0]}]
set_propertyIOSTANDARDLVCMOS33[get_ports{out[4]}]
set_propertyIOSTANDARDLVCMOS33[get_ports{out[3]}]
set_propertyIOSTANDARDLVCMOS33[get_ports{out[2]}]
set_propertyIOSTANDARDLVCMOS33[get_ports{out[1]}]
set_propertyIOSTANDARDLVCMOS33[get_ports{out[0]}]
set_propertyIOSTANDARDLVCMOS33[get_ports{sel[2]}]
set_propertyIOSTANDARDLVCMOS33[get_ports{sel[1]}]
set_propertyIOSTANDARDLVCMOS33[get_ports{sel[0]}]
set_propertyPACKAGE_PINU3[get_ports{a[3]}]
set_propertyPACKAGE_PINU2[get_ports{a[2]}]
set_propertyPACKAGE_PINV2[get_ports{a[1]}]
set_propertyPACKAGE_PINV5[get_ports{a[0]}]
set_propertyPACKAGE_PINV4[get_ports{b[3]}]
set_propertyPACKAGE_PINR3[get_ports{b[2]}]
set_propertyPACKAGE_PINT3[get_ports{b[1]}]
set_propertyPACKAGE_PINT5[get_ports{b[0]}]
set_propertyPACKAGE_PINF6[get_ports{out[4]}]
set_propertyPACKAGE_PING4[get_ports{out[3]}]
set_propertyPACKAGE_PING3[get_ports{out[2]}]
set_propertyPACKAGE_PINJ4[get_ports{out[1]}]
set_propertyPACKAGE_PINH4[get_ports{out[0]}]
set_propertyPACKAGE_PINP5[get_ports{sel[2]}]
set_propertyPACKAGE_PINP4[get_ports{sel[1]}]
set_propertyPACKAGE_PINP3[get_ports{sel[0]}]
RTL原理图:
6.3结果分析
用拨码开关控制alu的输入,led灯显示为输出值
将拨码开关的前五个设置成out的输出,右侧小的拨码开关的左侧四个设置成a,右侧四个设置成b,将P5,P4,P3三个大的拨码开关设置成sel,则通过拨动P5,P4,P3能将运算改变,通过拨动右侧八个小开关,可以设置a,b的值,从而进行运算。
7实验7
7.1实验内容
带有清零和置位端的D触发器
门级描述
行为级描述
对比两种方法的波形图
7.2实验步骤
方法一门级描述:
moduleflip_flop1(
inputd,
inputreset,
inputset,
inputclk,
outputq,
outputfq
nandf1(out1,set,out4,out2);
nandf2(out2,reset,out1,clk);
nandf3(out3,out2,clk,out4);
nandf4(out4,out3,reset,d);
nandf5(q,set,out2,fq);
nandf6(fq,q,reset,out3);
方法二行为描述:
moduledff(q,d,clk,r,s);
inputd,clk,r,s;
outputq;
regq;
always@(posedgeclkorposedgerorposedges)
if(r)q<
=1'
elseif(s)q<
elseq<
=d;
endmodule
7.3结果分析
方法一门级描述测试代码:
moduleflip_flop1_ts();
regr;
regs;
regd;
regclk;
wireq;
wirefq;
flip_flop1u1(d,r,s,clk,q,fq);
clk=0;
d=0;
s=1;
r=1;
#2r=0;
#5r=1;
#2s=0;
#5s=1;
r=0;
#50s=0;
r=1;
#100s=1;
always#20clk=~clk;
always#40d=~d;
门级描述仿真图象:
D触发器-门级描述
由图像可看出,reset和set都是低电平有效,当两个量都无效的时候,输出q=d;
测试代码:
`timescale1ns/1ps
moduledff_tb();
regd;
regr;
wireq;
dffDFF(q,d,clk,r,s);
forever
#(40/2)clk=1;
#(40/2)clk=0;
#40d=~d;
s=0;
r=0;
#(7*40)s=1;
#50s=1;
#100s=0;
仿真图象:
D触发器-行为级描述
两种图像的比较:
门级与行为级描述出来的仿真图象都是一样的,但是门级描述时,清零和置数端都是同步的,就是说在clk上升沿时,清零和置数端才有效。
而在行为级描述中,我定义了清零和置数端都是异步的,所以从图像中可看出来,当reset端有效时,结果立即变成0,当set端有效时,结果立即变成1.当两者都无效时,结果才是data_in的值。
8实验8
8.1实验内容
实现一个8位二进制计数器
编写电路模块及激励模块
波形图截屏验证
8.2实验步骤
modulecounter(out,clk,rst);
inputclk,rst;
outputout;
reg[7:
always@(posedgeclkornegedgerst)
begin
if(!
rst)out<
=8'
b00000000;
elseout<
=out+8'
b00000001;
8.3实验分析
测试代码:
modulecounter_tb();
regrst;
wire[7:
counteri1(out,clk,rst);
always
rst=8'
#15rst=1'
#20rst=1'
#50rst=1'
end
clk=8'
forever#5clk=~clk;
8位2进制计数器仿真图象
说明:
在rst(清零端)无效的时候,在每一个clk的上升沿处开始计数,out的值会随之加1,当rst(清零端)有效时,counter原先的值全部清空为0.而在计数器counter每计数到7的时候,会重新从0开始计数。
9.实验9
9.1实验内容
修改上题中计数器
将计数值通过板子上的LED灯显示,观察结果如何
如何修改代码,使得LED灯清晰显示
增加一个控制计数的拨码开关:
开则继续计数,关则暂停计数
9.2实验步骤
modulecounterled(out,clk,rst,on);
inputclk,rst,on;
output[7:
reg[21:
0]cnt;
wirec21;
always@(posedgeclk)
cnt<
=cnt+1;
assignc21=~cnt[21];
always@(posedgec21)
if(on)
if(!
9.3实验结果
modulecounterled_tb();
regon;
wire[7:
counterledLED(out,clk,rst,on);
beginclk=8'
always
#15rst=1'
#20rst=1'
#50rst=1'
beginon=1'
forever#50on=~on;
set_propertyIOSTANDARDLVCMOS33[get_ports{out[7]}]
set_propertyIOSTANDARDLVCMOS33[get_ports{out[6]}]
set_propertyIOSTANDARDLVCMOS33[get_ports{out[5]}]
set_propertyIOSTAND
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 硬件 描述 语言 实验 报告