全文预览

verilog十六分频实现

上传者:相惜 |  格式:doc  |  页数:5 |  大小:38KB

文档介绍
inРif(reset) Р beginР counter=0;Р dout=0; // 复位端起作用,计数器和输出结果都清零Р endР else if(counter==7) // 若计数器counter为7,dout翻转且计数器清零Р begin Р dout=~dout;Р counter=0;Р endР elseР counter=counter+1; // 否则的话计数器自加1Р endРendmodule //结束РTesetbench如下:Р`timescale 1ns/1nsРmodule div_bench;Рreg clk;Рreg reset;Р wire dout;Р div_16 d1(clk,reset,dout); // 实例化Р Р always Р begin // 对时钟信号clk赋值Р #10 clk=0; Р #10 clk=1;Р endР initialР begin Р reset=1; // 对复位信号reset赋值Р #5 reset=0;Р #1000 $finish; // 1000ns仿真结束Р endР initialР $monitor("dout changed to %b at time %t,%b",dout,$time);//监视输出结果РEndmodule //结束Р四、实验结果与数据处理РModelsim仿真结果,波形图。Р仿真结果波形图如下:Р上图中第一条线是时钟信号(clk),第二条是复位信号(reset),第三条是输出结果(dout),第四条是设置的三位计数器(conuter),复位信号在0时刻清零此时dout和counter都复位,5秒时复位信号失去作用,clk 10ns开始产生,并且周期为20ns,从仿真波形图中可以看出,dout的周期变为clk的16倍,也就是16分频,这正是我们期望的.

收藏

分享

举报
下载此文档