北航verilog实验报告

北京航空航天大学

电子电路设计数字部分实验报告

实验一 简单组合逻辑设计 ........................................................................................................... 2 实验二 简单分频时序逻辑电路的设计 ....................................................................................... 3 一.实验目的:1.掌握最基本组合逻辑电路的实现方法。 ..................................................... 3 2.学习时序电路测试模块的编写。 ............................................................................................. 3 3.学习综合和不同层次的仿真。 ................................................................................................. 3 实验三 利用条件语句实现计数分频时序电路 ........................................................................... 5 实验四 阻塞赋值与非阻塞赋值的区别 ....................................................................................... 7 实验五 用always块实现较复杂的组合逻辑: ........................................................................ 10 实验六 在 Verilog HDL中使用函数 ......................................................................................... 12 实验七 在Verilog HDL中使用任务(task) ................................................................................. 14 实验八 利用有限状态机进行时序逻辑的设计 ......................................................................... 17 实验九 楼梯灯 ............................................................................................................................. 19 实验思考与总结 ............................................................................................................................. 29

学 院: 学 号: 姓 名:

实验一 简单组合逻辑设计

一.实验目的:

1.掌握基本组合逻辑电路的实现方法。

2.初步了解两种基本组合逻辑电路的生成方法。 3.学习测试模块的编写。

4.通过综合和布局布线了解不同层次仿真的物理意义。 二.实验设备:

安装Modelsim-6.5c的PC机。 三.实验内容:

描述一个可综合的数据比较器,比较数据a 、b的大小,若相同,则给出结果1,否则给出结果0

四.综合仿真结果

实验二 简单分频时序逻辑电路的设计

一.实验目的:1.掌握最基本组合逻辑电路的实现方法。

2.学习时序电路测试模块的编写。

3.学习综合和不同层次的仿真。

二.实验设备:

安装Modelsim-6.5c的PC机。 三.实验内容:

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

四.实验代码

module half_clk(reset,clk_in,clk_out); input clk_in,reset; output clk_out; reg clk_out;

always@(posedge clk_in) begin if(!reset) clk_out=0; else

clk_out=~clk_out; end endmodule

`timescale 1ns/100ps `define clk_cycle 50 module top; reg clk,reset; wire clk_out;

always #`clk_cycle clk=~clk; initial begin clk=0; reset=-1; #10 reset=0; #110 reset=1; #100000 $stop; end

half_clk m0(.reset(reset),.clk_in(clk),.clk_out(clk_out)); endmodule

五.综合仿真结果

联系客服:779662525#qq.com(#替换为@)