当前位置:首页 > 北航verilog上机实验报告
Verilog上机实验报告
本次实验是Verilog上机的第二个实验,练习了比较简单的时序逻辑电路的设计——分频器。
其中二分频的设计比较简单,课本上有几乎完全相同的代码,只需要稍加修改即可。而任意分频的设计比较困难,需要好好思考。我通过想学长请教,以及上网上查找资料,利用一个计数器完成了任意分频的设计,而产生不同占空比的设计,其原理相同。
13
Verilog上机实验报告
实验三 利用条件语句实现记数分频时序电路
一、 实验目的
1. 掌握条件语句在简单时序模块设计中的使用;
2. 学习在Verilog模块中应用计数器;
3. 学习测试模块的编写、综合和不同层次的仿真。
二、 实验内容
利用10MB的时钟,设计一个单周期形状的周期波形。
三、 对任务的理解
题目要求产生特定形状的周期波形,从给出的波形来看,就是一个top=10us,down=40us,T=50us的周期方波。如果输入时钟为10MB,则top=100,down=400。可以利用实验2中占空比不同的分频电路的代码来完成任务。
四、 实现思路
1. 首先这个比较器应当有3个对外的端口,分别是:复位rst,输入时钟clk和输
出out。
2. 利用计数器产生特定的延时,来产生响应的波形。这个任务和实验二中的思考
题二第二个小任务完全相同。
五、 代码
1. 主程序
---------------------------------------文件名 div_ex.v--------------------------------------------
module div_ex(rst,clk,out); input rst, clk; reg [6:0] top; reg [8:0] down; output out; reg out;
14
Verilog上机实验报告
always @(posedge clk) begin if(!rst) begin top<=0; down<=0; out<=0; end else begin
if (out==1) begin
if (top==100) begin top<=0; out<=~out; end else begin
top<=top+1; out<=out; end end else begin
if (down==400) begin
down<=0; out<=~out; end else begin
down<=down+1; out<=out; end end end end
endmodule
2. 测试模块
----------------------------------------文件名 div_ex_tb.v-----------------------------------
15
Verilog上机实验报告
`timescale 1ns/1ns `define clk_cycle 50 module t; reg clk,rst; wire out;
always #`clk_cycle clk=~clk; initial begin
clk=0; rst=1; #10 rst=0; #110 rst=1;
#600000 $stop; end
div_ex m(.rst(rst),.clk(clk),.out(out)); endmodule
六、 仿真波形
七、 总结及对波形的说明
1. 实验结论
从波形中可以看出每个周期中高电平持续时间为10000ns=10us,低电平持续时间为40000ns=40us。满足题目的要求。
16
共分享92篇相关文档