北航verilog实验报告(全)

目录

实验一 ................................................ 2 实验二 ................................................ 9 实验三 ............................................... 21 实验四 ............................................... 44

实验一

实验目的:熟悉硬件开发流程,掌握Modelsim设计与仿真环境,学会简单组合逻辑电路、简单时序逻辑电路设计,不要求掌握综合和综合后仿真。 实验内容:必做实验:练习一、简单的组合逻辑设计

练习二、简单分频时序逻辑电路的设计

选做实验:选做一、练习一的练习题

选做二、 7段数码管译码电路

练习一、简单的组合逻辑设计

描述一个可综合的数据比较器,比较数据a 、b的大小,若相同,则给出结果1,否则给出结果0。 实验代码: 模块源代码:

module compare(equal,a,b); input a,b; output equal;

assign equal=(a==b)?1:0; endmodule 测试模块源代码: `timescale 1ns/1ns `include \module t; reg a,b; wire equal; initial begin a=0; b=0; #100 a=0;b=1; #100 a=1;b=1;

2

#100 a=1;b=0; #100 a=0;b=0; #100 $stop; end

compare m(.equal(equal),.a(a),.b(b)); endmodule 实验波形

练习二、简单分频时序逻辑电路的设计

用always块和@(posedge clk)或@(negedge clk)的结构表述一个1/2分频器的可综合模型,观察时序仿真结果。 实验代码: 模块源代码:

module halfclk(reset,clkin,clkout); input clkin,reset; output clkout; reg clkout; always@(posedge clkin) begin if(!reset) clkout=0; else clkout=~clkout; end endmodule 测试模块源代码: `timescale 1ns/100ps `define clkcycle 50 module tt; reg clkin,reset; wire clkout;

3

always #`clkcycle clkin=~clkin; initial begin clkin=0; reset=1; #10 reset=0; #110 reset=1; #100000 $stop; end

halfclk m0(.reset(reset),.clkin(clkin),.clkout(clkout)); endmodule

实验波形:

练习题1:设计一个字节(8位)的比较器。要求:比较两个字节的大小,并改写测试模型,使其能进行比较全面的测试。观察RTL级仿真、综合后门级仿真和布线后仿真有什么不同,并说明不同的原因。从文件系统中查阅自动生成的compare.vm,compare.vo文件和compare.v文件作比较,说出不同点和相同点。

实验代码: 模块源代码:

module compare1(equal,a,b); input [7:0]a,b; output equal;

assign equal=(a>b)?1:0; endmodule 测试模块源代码: `timescale 1ns/1ns

4

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4