基于FPGA的数字频率计的设计.docx
- 文档编号:10155204
- 上传时间:2023-02-08
- 格式:DOCX
- 页数:11
- 大小:531.44KB
基于FPGA的数字频率计的设计.docx
《基于FPGA的数字频率计的设计.docx》由会员分享,可在线阅读,更多相关《基于FPGA的数字频率计的设计.docx(11页珍藏版)》请在冰豆网上搜索。
基于FPGA的数字频率计的设计
基于FPGA的数字频率计的设计
用VerilogHDL语言设计频率计的实例
前面介绍的组合逻辑电路和时序逻辑电路的设计都是属于功能部件的设计。
功能部件设计建立在真值表、特性表、状态转换图或工作时序图的基础上,在输入变量较少的情况下,因为描述逻辑函数关系的各种表格和图表较简单,设计电路分析建模的工作也较简单,按照前面介绍的方法就可以完成电路的设计工作。
但在大型数字系统的设计中,因为输入变量、输出变量和状态变量的数目可能相当大,设计电路分析建模的工作将非常复杂,所以,前面介绍的设计方法在进行数字系统的设计时不适用,进行数字系统的设计需要引入层次化结构设计的思想。
数字系统的层次化结构设计
图5-1系统结构的组成框图
层次化结构设计的思想是将设计的目标层层分解,对分解后的各层次电路分别进行设计,最后,再根据分解的规则将各层次电路综合起来组成数字系统。
各层次模块组成系统的连接示意图如图5-1所示。
因为图5-1所示的系统结构连接示意图与树的形状相类似,所以,具有这种结构的系统称为树形结构系统。
对于树型结构系统存在着“自顶向下(Top-down)”设计和“自底向上(Bottom-up)”设计两种不同的设计思想。
自顶向下的设计强调性能上的最优,而自底向上的设计强调的是设计上的经济性。
实际的设计过程往往是这两种设计方法的综合,但在使用大规模集成电路,特别是使用可编程逻辑器件进行设计时,自顶向下的设计会有更多的优点。
随着电子设计自动化水平的提高,在进行复杂数字系统设计时,使用EDA仿真工具可以使整个设计过程变得简捷和方便,特别是对各层次电路工作时序图的分析更为快捷和准确,为设计更大规模的数字系统提供了直观准确的实验数据。
下面以两位十进制频率计的设计为例,介绍层次化设计的思想在EDA环境下的体现,所采用的EDA工具软件平台是QuartusII。
两位十进制数字频率计的层次结构框图
根据两位十进制数字频率计的逻辑功能可知,两位十进制数字频率计应由带锁存功能的十进制计数器电路、测频时序控制电路,显示译码器和频率计顶层电路四部分组成,两位十进制数字频率计的层次化结构示意图如图5-2所示。
利用EDA技术进行两位十进制数字频率计设计的步骤是:
先分别设计底层的计数器电路模块,测频时序控制电路模块和显示译码器电路模块,再在频率计顶层电路中调入事先设计好的三个底层电路模块。
在QuartusII中实现计数器的电路
在D盘新建一个文件夹,命名plj,运行QuartusII,选择File->NewProject新建工程,把工程放入在该新建文件夹里面,目标芯片选择Cyclone->EP1C3T144C8
选择File→New命令,在VerilogHDL编辑窗口中,用VerilogHDL语言编写两个十进制计数器的程序为
带锁存功能的十进制计数器
modulesjzjsq(Q0,Q1,Q2,Q3,Q4,Q5,Q6,Q7,C,C1,CP,R,EP,ET);
inputCP,R,EP,ET;
outputQ0,Q1,Q2,Q3,Q4,Q5,Q6,Q7,C,C1;
regQ0,Q1,Q2,Q3,Q4,Q5,Q6,Q7;
reg[3:
0]QT1;
always@(negedgeCP)
begin
if(~R)QT1=4'b0000;
elseif(EP&&ET)
if(QT1<4'b1001)QT1=QT1+1;
elseQT1=4'b0000;
elseQT1=QT1;
end
reg[7:
4]QT2;
always@(negedgeQ3)
begin
if(~R)QT2=4'b0000;
elseif(EP&&ET)
if(QT2<4'b1001)QT2=QT2+1;
elseQT2=4'b0000;
elseQT2=QT2;
end
always
begin
{Q3,Q2,Q1,Q0}=QT1;
{Q7,Q6,Q5,Q4}=QT2;
end
and(C1,Q0,Q3);
and(C,Q0,Q3,Q4,Q7);
endmodule
编译
QuartusII编译器是由一系列处理模块构成的,这些模块负责对设计项目的检错、逻辑综合、结构综合、输出结果的编辑配置,以及时序分析。
在这一过程中将设计项目适配到FPGA/CPLD目标器件的同时产生多种用途的输出文件,如功能和时序仿真文件、器件编程的目标文件等。
编译器首先从工程设计文件中的层次结构描述中提取信息,包括每个低层次文件中的错误信息,供设计者排除。
编译的方法是
选择Processing→StartCompilation命令,启动全程编译。
如果工程文件中有错误,在下方的Processing选项卡中会显示出来。
对于Processing选项卡中显示出的语句格式错误,可双击此条文,即可弹出相应的设计文件,蓝色标记处即为文件中的错误,将相关的错误排除后再次进行编译。
编译成功后,点击编译成功提示栏的“确定”按钮,完成编译的操作。
编译结果的报告窗口
仿真
工程编译通过后,必须对其功能和时序特性进行仿真测试,以了解设计结果是否满足原设计的要求。
仿真程序的步骤如下:
(1)打开波形编辑器
选择File→New命令,在New对话框中选择OtherFiles选项,在弹出的对话框中选择VectorWaveformFile(波形图文件)选项
单击OK按钮,打开空白的波形图编辑器窗口。
对时序仿真来说,将仿真时间轴设置在一个合理的时间区域上非常重要,一般设置的时间范围在数十微秒间。
选择Edit→EndTime命令,在弹出的对话框中的Time文本框中输入30,单位选择μs,即设置仿真域的时间为30μs,单击OK按钮即可。
仿真波形如下:
包装元件入库
关闭波形图仿真程序窗口,重新打开刚才设计好的文件,然后选择File→Create/Update→CreateSymbolFilesforCurrentFile命令,可将当前文件变成一个包装好的单一元件(Symbol),并放置在工程路径指定的文件夹中备用。
在QuartusII中实现测频时序控制电路的设计
频率计要能够自动测频,必须在电路中增加一个测频控制电路。
测频控制电路的功能是:
能够产生测频使能EP和ET、测频时钟clk和清零R三个控制信号。
频率计在这三个控制信号的控制下自动完成频率的测量。
频率测量的过程要经历清零、计数和锁存三个流程。
频率计的功能是测量频率。
因为,频率的定义是每秒钟完成振荡的次数,所以,测频控制电路要输出控制测频的时钟信号,计数器开始计数时的复位信号和计数器使能的控制信号。
根据这些信号的逻辑关系可得,测频时序控制电路应由时钟计数器、产生控制信号的译码器和量程控制的编码器三个部分组成。
利用VerilogHDL语言编写的测频控制电路的模块为:
modulecpkz(Q0,Q1,Q2,Q3,Q4,Q5,Q6,Q7,EP1,ET1,CLR,clk,S0,S1,R);
inputclk,S0,S1,R;
outputEP1,ET1,CLR,Q0,Q1,Q2,Q3,Q4,Q5,Q6,Q7;
wires0,s1,m0,m1,m2,m3;
not(s0,S0);
not(s1,S1);
and(m0,s1,s0);
and(m1,s1,S0);
and(m2,S1,s0);
and(m3,S1,S0);
regQ0,Q1,Q2,Q3,Q4,Q5,Q6,Q7,Q8,Q9,QA,QB,QC,QD,QE,QF;
reg[15:
0]QT1;
always@(negedgeclk)
begin
if(~R)QT1=16'b0000000000000000;
elseif(m0)begin
if(QT1<16'b0000000001110100)QT1=QT1+1;
QT1=QT1;end
elseif(m1)begin
if(QT1<16'b0000001111111000)QT1=QT1+1;
QT1=QT1;end
not(a2,A2);
not(a1,A1);
not(a0,A0);
and(m0,a3,a2,a1,a0);
and(m1,a3,a2,a1,A0);
and(m2,a3,a2,A1,a0);
and(m3,a3,a2,A1,A0);
and(m4,a3,A2,a1,a0);
and(m5,a3,A2,a1,A0);
and(m6,a3,A2,A1,a0);
and(m7,a3,A2,A1,A0);
and(m8,A3,a2,a1,a0);
and(m9,A3,a2,a1,A0);
or(a,m0,m2,m3,m5,m6,m7,m8,m9);
or(b,m0,m1,m2,m3,m4,m7,m8,m9);
or(c,m0,m1,m3,m4,m5,m6,m7,m8,m9);
or(d,m0,m2,m3,m5,m6,m8,m9);
or(e,m0,m2,m6,m8);
or(f,m0,m4,m5,m6,m8,m9);
or(g,m2,m3,m4,m5,m6,m8,m9);
endmodule
编译成功后就可以按上面的方法包装元件入库了
频率计顶层电路的设计
频率计顶层电路是用来连接底层电路的,用VerilogHDL语言可以编写连接电路的模块。
在底层电路模块已经包装入库的前提下,用QuartusII软件所具有的原理图编辑功能比较方便,原理图编辑功能设计电路的操作方法为:
(1)在QuartusII软件的工作界面上,选择File→New命令,在弹出的对话框中选择如图E-17所示的BlockDiagram/SchematicFile选项,然后按OK按钮即可打开原理图编辑窗口。
(2)将元件拖入原理图编辑窗口的方法
在原理图编辑窗口中,点击元件工具栏上的与门符号按钮,就可以打开元件库。
在元件库中,点击“project”选项,就可以找到打包入库的元件cpkz,sjzjsq和xsymq,点击“ok”按钮,就可以将器件拖入编辑窗口。
安置好器件以后,将输入端口和输出端口器件拖入编辑界面。
安置好器件和端口后,根据图所示的电路连接顶层电路。
连接电路的导线和修改端口文字的按钮在工具栏上,激活相关的按钮就可以进行导线的连接和文字的修改。
按照图上所示的电路连接好以后,采用前面相同的方法保存、编译通过以后,启动波形仿真的程序,波形仿真的结果如下所示。
波形仿真的结果清晰的显示出,频率计电路在复位信号R的驱动下开始测频的工作。
测频电路输入的clk信号周期是10ns,待测信号的周期是23ns,1μs(10ns×100)的测量时间内计数的脉冲数应为44,频率计输出的信号a2b2c2d2e2f2g2和a1b1c1d1e1f1g1相等,都是0110011,该信号输入七段数码管,将显示数字44,所测信号的频率为44MHz,说明所设计的电路时序正确。
将设计文件下载到芯片上的方法
要将设计好的文件下载到芯片上,首先要进行引脚锁定的工作。
引脚锁定的方法是:
在QuartusII软件的工作界面上,执行“Assignments”菜单中的“pins”命令,将弹出如图5-20所示的EP1C3T144C8芯片的引脚排列图。
图5-20EP1C3T144C8芯片的引脚排列图
根据开发板提供的配置方法,用鼠标拖拽的方法将输入和输出信号的引脚锁定。
在引脚锁定的操作中,可以使用放大镜放大引脚排列图,以方便引脚锁定的操作。
引脚锁定后的界面如图5-21所示。
图5-21引脚锁定界面
锁定引脚以后,保存引脚锁定文件,完成编译的工作后,执行“TOOL”工具栏下的“Program”命令,将弹出图5-22所示的编程下载界面,勾选文件“sjzjsq.sof”后的“Program/Config”选择框,点击“START”按钮,即开始下载,当看到进度指示条显示“100%”时即表示下载完成。
图5-22编程下载界面
下载完成以后,将数字频率计的外围电路与FPGA芯片相连,即完成数字频率计的设计和制作的工作。
设计心得:
通过这次设计使我懂得了如何可以用电路图的方法去设计顶层电路,而不用编写一大段长长的程序了。
同时也让我了解到自己以前对QuartusⅡ软件的错误认识,还有就是进一步深刻的了解了QuartusⅡ的使用方法。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 FPGA 数字频率计 设计