基于Verilog的数字频率计的设计(包含代码及仿真)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
initial begin
yichu=1;
t1<=4'b0000;cnt2<=4'b0000;cnt3<=4'b0000;cnt4<=4'b0000;
t5<=4'b0000;
t6<=4'b0000;
end
always(posedge clk_in )
begin
if(!rest) begin
t1<=4'b0000;cnt2<=4'b0000;cnt3<=4'b0000;
6、要求被测输入信号应是符合数字电路要求的脉冲波。
七、verilog设计环境介绍
Verilog
Verilog HDL是目前应用最为广泛的硬件描述语言.Verilog HDL可以用来进行各种层次的逻辑设计,也可以进数字系统的逻辑综合,仿真验证和时序分析等。 Verilog HDL适合算法级,寄存器级,逻辑级,开关级、系统级和版图级等各个层次的设计和描述.
else count2<=count2+1;
if(count3==240000)
begin count3<=0;clk_100hz<=~clk_100hz;end
else count3<=count3+1;
if(count4==24000)
begin count4<=0;clk_1khz<=~clk_1khz;end
else if (count==13)
begin gate_out1<=0;clk_clear<=1;clk_latch<=0;count<=0;end
else
begin gate_out1<=0;clk_clear<=0;clk_latch<=0;end
end
endmodule
仿真图
仿真模块
三, 计数器程序
六、实验任务与要求
频率测量围为10Hz~10MHz,用6只数码管以kHz为单位显示测量结果;有三个带锁按键开关(任何时候都只会有一个被按下)用来选择1S、0.1S和0.01S三个闸门时间中的一个;有一个按钮开关用来使频率计复位;有两只LED,一只用来显示闸门的开与闭,另一只当计数器溢出时做溢出指示。
从以上讨论可知,电子计数器的测频原理实质上以比较法为基础,它将 和时基信号频率相比,两个频率相比的结果以数字的形式显示出来。
9、 1.原理框图溢出信号
clearlatch
时基
2、各模块功能及实现
一.分频模块程序
module count(rest,clk,clk_1hz,clk_10hz,clk_100hz,clk_1khz);
(2)设计出单元电路
(3)利用EDA软件对各单元电路及整体电路进行仿真
(4)利用EDA软件在ELB电子课程设计实验板实现设计
(5)观察实验结果
五、项目需用仪器设备名称以及所需主要元器件
PC机、EDA教学实验系统一台,带有(SPARTAN-3AXC3S200A芯片,LED管 , 七段数码管 等)的实验板一块 , 跳线、下载电缆一根,函数发生器。
end
else begin
if(count1==24000000)
begin count1<=0;clk_1hz<=~clk_1hz; end
else count1<=count1+1;
if(count2==2400000)
begin count2<=0;clk_10hz<=~clk_10hz;end
module counter(rest,start,clk_in,cnt1,cnt2,cnt3,cnt4,cnt5,cnt6,yichu,clk_clear);
input rest,start,clk_in,clk_clear;
output yichu;
reg yichu;
output reg [4:1]cnt1,cnt2,cnt3,cnt4,cnt5,cnt6;
else if(key1==0&&key10==0&&key100==1) begin gate<=clk_1khz;ff<=2'b11;end
else begin ff<=0;end
end
end
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
八、实验原理
所谓“频率”,就是周期性信号在单位时间(1秒)变化的次数。若在一定时间计得这个周期信号变化的次数为N,则其频率可表达为: (1)
电子技术器可以严格按公式(1)所表达的频率的定义进行测频,其原理方框图如图1所示:
①②⑤


图1 测频原理图
首先,把被测信号①(以正弦波为例)通过放大整形电路变成脉冲②(实际上变成方波即可)其重复频率等于被测频率 ,然后将它加到闸门的一个输入端。闸门通过门控信号④来控制开、闭时间,只有在闸门开通时间T,被计数的脉冲⑤才能通过闸门,被送到十进制电子计数器进行计数。门控信号的时间T是非常准确的,以它作为时间基准,它由时基发生器提供。时基信号发生器由一个高稳定的石英振荡器和一系列数字分频器组成,由它输出的标准时间脉冲(时标)去控制门控电路形成门控信号。比如,时标信号的重复周期为1S,则加到闸门的门控信号作用时间T及闸门时间亦准确的等于1S,及闸门开通时间为1S,这时若计得10000个数,则有(1)式知,被测频率 。
verilogHDL进行设计最大的优点是其工艺无关性.这使得工程师在功能设计,逻辑验证阶段可以不必过多考虑门级及工艺实现的具体细节,只需根据系统设计的要求施加不同的约束条件,即可设计出实际电路.
verilogHDL是一种硬件描述语言(hardware description language),为了制作数字电路而用来描述ASICS和FPGA的设计之用。
数字频率计的相关技术指标如下:
1、位数:测量频率通过LED数码管为六位十进制数显示。
2、测试频率围为:10HZ-10MHZ。
3、计数器溢出时要有溢出标志over。
4、需要有闸门标志gate。
5、显示工作方式:a、用BCD七段共阳极数码管显示读数,只有在读数不发生跳变时才是正确的结果。b、采用记忆显示方法,即在一次测试结束时,显示测试结果,此显示值一直保留到下次测量显示数到来,才将上次显示更新。用第二次测试结果,更新显示值。
cnt3<=4'b0000;cnt4<=4'b0000;
t5<=4'b0000;cnt6<=4'b0000;
yichu<=0;
end
else if((cnt5==4'b1001)&&(cnt4==4'b1001)&&(cnt3==4'b1001)&&(cnt2==4'b1001)&&
(cnt1==4'b1001))
input clk,rest;
output reg clk_1hz,clk_10hz,clk_100hz,clk_1khz;
reg[29:0] count1,count2,count3,count4;
initial
begin
clk_1hz=0;
clk_10hz=0;
clk_100hz=0;
clk_1khz=0;
t4<=4'b0000;cnt5<=4'b0000;cnt6<=4'b0000;
end
else begin
if(clk_clear==1)
begin
t1<=4'b0000;cnt2<=4'b0000;cnt3<=4'b0000;
t4<=4'b0000;cnt5<=4'b0000;cnt6<=4'b0000;yichu<=1;
选择VHDL还是verilog HDL?这是一个初学者最常见的问题。其实两种语言的差别并不大,他们的描述能力也是类似的。掌握其中一种语言以后,可以通过短期的学习,较快的学会另一种语言。 选择何种语言主要还是看周围人群的使用习惯,这样可以方便日后的学习交流。当然,如果您是专用集成电路(ASIC)设计人员,则必须首先掌握verilog,因为在IC设计领域,90%以上的公司都是采用verilog进行IC设计。对于PLD/FPGA设计者而言,两种语言可以自由选择。
begin
t1<=4'b0000;cnt2<=4'b0000;
t3<=4'b0000;cnt4<=4'b0000;
t5<=4'b0001;cnt6<=cnt6+4'b0001;
end
else if((cnt4==4'b1001)&&(cnt3==4'b1001)&&(cnt2==4'b1001)&&(cnt1==4'b1001)) begin
verilogHDL的设计者想要以 C 编程语言为基础设计一种语言,可以使工程师比较容易学习。
Verilog 是由en:Gateway Design Automation公司于大约1984年开始发展。Gateway Design Automation公司后来被CadenceDesign Systems于1990年所购并。现在 Cadence 对于 Gateway 公司的 Verilog 和 Verilog-XL 模拟器拥有全部的财产权。
else count4<=count4+1;
end
end
endmodule
仿பைடு நூலகம்图
仿真模块
二,门控电路和清零,锁存,阀门信号产生程序
module chose(rest,clk_10hz,clk_100hzhz,clk_1khz,key1,key10,key100,
gate_out1,ff,clk_latch,clk_clear);
一、实验名称
数字频率计的设计
二、实验地点
211楼303
三、实验目的和任务
(1)了解数字电路设计的基本特点
(2)了解数字频率计电路的基本原理
(3)基本掌握ISE软件的使用(设计输入、仿真、实现)
(4)了解可编程逻辑器件(FPGA)的一般情况
(5)基本掌握HDL的使用
四、实验容
(1)设计出符合设计要求的解决方案
else begin
if(key1==1&&key10==0&&key100==0) begin gate<=clk_10hz; ff<=2'b01;end
else if(key1==0&&key10==1&&key100==0) begingate<=clk_100hz;ff<=2'b10;end
count1=0;
count2=0;
count3=0;
count4=0;
end
always( posedge clk)
begin
if(!rest)
begin
count1<=0;count2<=0;count3<=0;count4<=0;
clk_1hz<=0; clk_10hz<=0;clk_100hz<=0;clk_1khz<=0;
always (posedge gate)
begin
count<=count+1;
if (count<=9)
begin gate_out1<=1;clk_clear<=0;clk_latch<=0;end
else if (count==11)
begin gate_out1<=0;clk_clear<=0;clk_latch<=1;end
input rest ,clk_10hz,clk_100hz,clk_1khz,key1,key10,key100;
output gate_out1,clk_latch,clk_clear;
output reg [2:1] ff;
reg gate_out1,clk_latch,clk_clear,gate;
reg [4:1]count;
initial begin gate_out1=0;ff=0;clk_latch=0;clk_clear=0;gate=0;count=0;end
always( posedge clk_1khz)
begin
if(!rest) begin gate_out1<=0; ff<=2'b00;end
end
else if(start==1)
begin
if((cnt6==4'b1001)&&(cnt5==4'b1001)&&(cnt4==4'b1001)&&(cnt3==4'b1001)&&(cnt2==4'b1001)&&(cnt1==4'b1001))
begin
t1<=4'b0000;cnt2<=4'b0000;
t1<=4'b0000;cnt2<=4'b0000;cnt3<=4'b0000;
t4<=4'b0000;cnt5<=cnt5+4'b0001;cnt6<=cnt6;
end
相关文档
最新文档