北航数字EDA基础实验报告(1-3).docx
数字EDA基础实验报告
实验一简单的组合逻辑设计
100227班XXX一对实验的理解
本实验是Verilog数字系统设计的第一个实验,也是最基础的实验。通过这个实验,我们可以练习基本组合逻辑电路的实现方法,初步了解两种基本组合逻辑电路的生成方法,以及测试模块的编写。
二实现思路
本实验要求完成一个字节(8位)比较器。我们可以将两个8位的二进制变量在模块内进行比较。当a[7:0]b[7:0]时,使输出为1;否则输出为0。这个功能显然使用if语句即可完成。
三实验源代码
1功能模块源代码
moduleex1_1(out,a,b);
input[7:0]a,b;
outputout;
regout;
always@(aorb)
if(ab)
out=1;
else
out=0;
endmodule
2测试模块源代码
`includeex1.v
moduletestmodule;
reg[7:0]ain,bin;
wireoutw;
initial
begin
ain=8
bin=8
#200 ain=8
bin=8
#200 ain=8
bin=8
#200 $stop;
end
ex1_1m(.out(outw),.a(ain),.b(bin));
endmodule
四仿真波形
局部放大波形:
五波形说明
由波形可以看出:
T1时间段内,a=8b=8显然ab,故模块输出为高;
T2时间段内,a=8b=8显然ab,故模块输出为低;
T3时间段内,a=8b=8显然a=b,故模块输出为低。
六实验总结
通过本次试验,我们练习了基本组合逻辑电路的实现方法,初步了解了两种基本组合逻辑电路的生成方法,以及尝试进行测试模块的编写工作。在VerilogHDL中,描述组合逻辑电路常用assign结构。在仿真后,我们可以通过调整测试模块的参数来改变输入变量,查看输出结果是否正确,来检验模块逻辑正确性。可见,测试模块在VerilogHDL编写中起着不可磨灭的作用。
数字EDA基础实验报告
实验二简单分频时序逻辑电路的设计
100227班XXX一对实验的理解
本实验要求我们完成一个简单的二分频电路,同时输出相位与给定的相反。通过这个实验掌握最基本的时序电路的实现方法,熟悉时序电路测试模块的编写。
二实现思路
二分频,即输出波形频率时输入时钟的1/2,也就是周期是其2倍。具体来说,时钟每两次翻转,输出翻转一次。也就是每当时钟上升沿(或下降沿)到来时,输出波形翻转,这样就可以简单的实现一个二分频电路代码的编写。另外,题目要求相位相反,我们可以使用时钟下降沿触发即可完成。
三实验源代码
1功能模块源代码
moduleex2_1(q,clk,reset);
outputq;
inputreset;
inputclk;
regq;
always@(negedgeclkorposedgereset)
if(reset)
q=1b0;
else
q=~q;
endmodule
2测试模块源代码
`includeex2.v
moduletestmodule;
regclk;
regreset;
ex2_1m(q,clk,reset);
always#20clk=~clk;
initial
begin
clk=1b0;
reset=1b1;
#40reset=1b0;
#200reset=1b1;
end
endmodule
四仿真波形
局部放大波形:
五波形说明
由波形可以看出:
Reset=1的时间段内,输出为0;
Reset=0时间段内,分频器正常工作,且周期为输入的2倍,即频率为输入时钟的二分频。
六实验总结
通过本次试验,我们掌握最基本的时序电路的实现方法,熟悉了时序电路测试模块的编写,并且习惯了编译仿真界面的使用,以及尝试对有BUG代码段进行调试工作。在VerilogHDL中,相对于组合逻辑电路,时序逻辑电路也有规定的表述方式。在可综合的VerilogHDL模型中,通常使用always块结构来表述时序逻辑。与延时语句配合,always块也常