北航verilog实验报告(全).pdf
目录
实验一2
实验二8
实验三14
实验四27
实验一
实验目的:熟悉硬件开发流程,掌握Modelsim设计与仿真环境,学会简单组合逻辑电路、
简单时序逻辑电路设计,不要求掌握综合和综合后仿真。
实验内容:必做实验:练习一、简单的组合逻辑设计
练习二、简单分频时序逻辑电路的设计
选做实验:选做一、练习一的练习题
选做二、7段数码管译码电路
练习一、简单的组合逻辑设计
描述一个可综合的数据比较器,比较数据a、b的大小,若相同,则给出结果1,否则
给出结果0。
实验代码:
模块源代码:
modulecompare(equal,a,b);
inputa,b;
outputequal;
assignequal=(a==b)?1:0;
endmodule
测试模块源代码:
`timescale1ns/1ns
modulet;
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;
end
comparem(.equal(equal),.a(a),.b(b));
endmodule
实验波形
2
练习二、简单分频时序逻辑电路的设计
用always块和@(posedgeclk)或@(negedgeclk)的结构表述一个1/2分频器的可综合模
型,观察时序仿真结果。
实验代码:
模块源代码:
modulehalfclk(reset,clkin,clkout);
inputclkin,reset;
outputclkout;
regclkout;
always@(posedgeclkin)
begin
if(!reset)clkout=0;
elseclkout=~clkout;
end
endmodule
测试模块源代码:
`timescale1ns/100ps
`defineclkcycle50
modulett;
regclkin,reset;
wireclkout;
always#`clkcycleclkin=~clkin;
initial
begin
clkin=0;
reset=1;
#10reset=0;
#110reset=1;
#100000$stop;
end
halfclkm0(.reset(reset),.clkin(clkin),.clkout(clkout));
endmodule
3
实验波形:
练习题1:设计一个字节(8位)的比较器。要求:比较两个字节的大小,并改
写测试模型,使其能进行比较全面的测试。观察RTL级仿真、综合后门级仿真和
布线后仿真有什么不同,并说明不同的原因。从文件系统中查阅自动生成的
compare.vm,compare.vo文件和compare.v文件作比较,说出不同点和相同点。
实验代码:
模块源代码:
modulecompare1(equal,a,b);
input[7:0]a,b;
outputequal;
assignequal=(ab)?1:0;
endmodule
测试模块源代码:
`timescale1ns/1ns
modulettt;
reg[7:0]a,b;
wireequal;
initial
begin
a=8b0