基于fpga的等精度频率计设计本科毕业设计论文(编辑修改稿)内容摘要:
( 6) 灵活高效的全局时钟网络,提高设计性能 ,开发板上提供48MHz 的晶振频率 ; ( 7) 在封装上, A3P030 有 132QFN 和 100VQFP 两种 ,此工程用的是开发板是 100VQFP 封装型号 ; LiberoIDE 是 Actel FPGA 的集成开发环境 ,提供完整的 FPGA 设计工具,支持原理图, HDL 输入,并以用户 GUI 的方式显示 FPGA 的设计过程。 LiberoIDE 不仅带有 Actel自身的高性能的布局布线工具,还集合了业界极具影响力的仿真、综合等工具。 简化设计过程,方便用户使用,能够使设计得到最佳优化,大大提高系统的性能。 集成软件如下 ModelSim:业界优秀的 HDL 语言仿真器,提供友好的调试环境,支持VHDL 和 Verilog 混合仿真,采用直接优化的编译技术, Tcl/TK 技术和单一内核仿真技术,编译速度快,编译的代码与平台无关,便于保护 IP 核,是FPGA/ASIC 设计的 RTL 级核门级电路仿真的首选工具。 Synplify: Synplicity 公司提供的专门针对 FPGA/CPLD 的逻辑综合工具,采用先进的 Timing Driven(时序驱动)核 (行为级综合提取技术)算法引擎,使用简便、性能优良、软件更新和技术创新速度快、综合面积较小、综合速度快。 Designer: Actel公司提供的针对 FPGA 的高效布局布线工具,用户界面简单明了,可以在短时间内完成布局布线,并生成反标注文件和最终的编程下载文件,可以用图形的方式管理约束管脚、浏览布局布线 的结果,提供时序约束和功耗分析的功能。 ViewDraw:图形化设计输入工具,使用麻烦 ,不易操作管理,容易出错,不推荐使用。 SmartDesign:在 以上版本中集成,图形化输入方式,方便连接和直观的校验设计的正确性,可以创建和管理设计的内部功能模块,可以直接导入 IP cores 和 HDL 文件生成的模块,功能较 ViewDraw 更强大,操作性更好。 WaveFormer:专用波形激励生成工具,手动绘图方式生成用户所需要的波形激励文件,免去编写 HDL 激励文件的繁琐,不能描述复杂的测试激励向量, 非常适合初学者的使用。 哈尔滨工业大学(威海)本科毕业设计(论文) 11 FlashPro:Actel 公司提供的编程下载软件,通过 JTAG 接口对器件进行操作,可执行的操作包括:下载文件、设置 /擦除密码、校验、读取配置信息等,支持菊花链 JTAG 编程,支持 Pdb/Stp 文件下载。 CoreConsole:用于配置处理器软核、总线和外围设备,准许设计者用图形化的方式快速搭建系统级的平台,如 805 ARM CortexM1 平台,用户任意添加处理器的外设。 SoftConsole:免费的处理器软件开发环境,带有 C、 C++编译器,支持Actel 的 CoreMP CortexM1 的软件程序的编译和调试功能,使用 USB 的下载器 FlashPro3 作为调试的硬件工具,为用户的开发和调试节省成本。 集成开发软件 设计流程如图 32 所示。 设 计 定 义综 合布 局 布 线设 计 输 入下 载 测 试仿 真综 合 前 仿 真综 合 后 仿 真布 局 布 线 后 仿 真 图 32 Libero 设计流程图 计数器模块 计数器 模块主要是利用 FPGA 提供的始终脉冲,产生一个控制闸门信号,利用控制闸门信号与被测信号共同产生一 个实际闸门信号,在利用这个实际闸门信号控制分别对被测信号 xN 和标准信号 Ns 计数,计数器 总体 设计 如图 33 所示。 图 33 计数器 哈尔滨工业大学(威海)本科毕业设计(论文) 12 rest:复位信号。 负脉冲有效; start:开始信号,高电平有效。 当置高时,计数器开始计数; clkx:被测频率信号; clk:时钟信号,由 EasyFPGA030 开发板提供的 48MHz 的 时钟控制信号; ctl:量程控制选择,低电平为 1Hz1KHz,高电平为 1KHz1MHz; ok:通信控制信号,在计数器完成计数后置高电平,通知除法器取数,并进行除法运算; Ns, Nx:分别是对标准信号和被测信号计数, 位宽带为 11 为。 计数器模块 仿真结果如图 34 所示。 clkx 被测信号设置的是 1MHz,标准信号 clks 由 48MHz 分频得到的是 1KHz,计数器计得 Nx=20xx, Ns=2。 计数完成时 ok 信号被置高电平。 结果正确。 图 34 计数器模块仿真图 分频模块 分频模块主要是对 FGPA 产生的 48MHz 的时钟 晶振频率进行分频,获得所需的控制信号频率和标准信号频率,其模块 设计 如图 35 所示。 图 35 分频模块 rest:复位控制信号 ,负脉冲有效; clk:时钟信号,由 EasyFPGA030 开发板提供的 48MHz 的时钟控制信号; 哈尔滨工业大学(威海)本科毕业设计(论文) 13 ctl:分频控制信号,控制分频的的大小。 低 电平时分频为 1Hz,高 电平时分频为 1KHz; clk_s:为分得频率的输出端口; 预置闸门 模块 预置闸门模块是用分频模块分得的频率作为控制时钟信号,利用计数的方法产生一个预置闸门控制信号,其模块设计 如图 36 所示。 图 37 预置闸门信号 生成模块 rest:复位信号,负脉冲 有效; clk:时钟信号。 与分频模块端口的 clk_s 相连,对 clk_s 信号进行计数,产生一个一定宽度的预置闸门信号; start:开始信号,高电平有效,置高时,开始产生预置闸门脉冲信号; clkp:产生闸门信号的输出端; 实际闸门 模块 实际闸门模块是利用预置闸门模块产生的预置闸门信号与从外部输入的被测信号共同控制产生一个实际闸门控制信号,这个控制信号与被测信号时完全同步的,其模块设计 如图 38 所示。 图 38 实际闸门信号生成模块 rest:复位信号,负脉冲有效; clkp: 预置闸门信号输入端, 与预置闸门信号模块的 clkp 端口相连; clkx:被测信号输入端; 哈尔滨工业大学(威海)本科毕业设计(论文) 14 clkr:实际闸门信号输出端,利用预置闸门信号与被测信号产生一 个 实际闸门信号; 计数 Nx模块 计数 Nx模块是利用实际闸门模块产生的实际闸门控制信号来控制对被测量信号 Nx进行计数,其模块设计 如图 39 所示。 图 39 被测信号 计数器 rest:复位信号,负脉冲有效; clkx:被测信号输入端; clkp: 预置闸门信号输入端,与预置闸门信号模块的 clkp 端口相连; Nx:计数器输出端,在预置闸门信号的高电平宽度内,对被测信号的上升沿计数,输出一个 11 位 2 进制数; 计数 Ns模块 计数 Ns 模块是利用实际闸门模块产生的实际闸门控制信号来控制对标准信号 Ns 进行计数,其模块设计如图 310 所示。 图 310 标准信号 计数器 rest:复位信号,负脉冲有效; clks:标准信号输入端。 与分频模块的输出端 clk_s 相连,因此标准信号的频率分别是 1Hz 和 1KHz,也就是两个量程范围 ,测量的量程范 围是1Hz1KHz, 1KHz1MHz; 哈尔滨工业大学(威海)本科毕业设计(论文) 15 clkr:实际闸门信号。 Nx:计数器输出端,在实际闸门信号的高电平宽度内,对标准信号的上升沿计数,输出一个 11 位 2 进制数; 通信控制模块 通信控制模块是在计数器对被测信号和标准信号计数完之后产生一个高电平的 ok 信号,这个信号通知后面的除法器模块计数完成,可以取测量数据进行运算处理了,其模块设计 如图 311 所示。 图 311 通信控制模块 rest:复位信号,负脉冲有效; clkr:实际闸门信号输入端。 以 clkr 的下降沿作为计数完成时刻; start:开始信号,高电平有效,与预置闸门模块的 start 是同一信号; ok:控制信号输出端口,在计数器完成计数是 ok 产生一个高电平,通知后面的除法器模块开始对计数器模块所计得的数取值; 计数器各模块连接详 图 把计数器内部各个模块:分频模块,预置闸门模块,实际闸门模块,计数器 Nx模块,计数器 Ns 模块,通信控制模块 之间的端口用图形化设计的方式连接起来, 连接时注意输出端口必须与输入端口连接,否侧将会出错,把外部输入端口设置成顶层端口, 其连线 如图 312 所示。 哈尔滨工业大学(威海)本科毕业设计(论文) 16 图 312 计数器内部模块 连接细图 除法器模块 除法器是把计数被测信号所计得的 Nx 作为被除数和标准信号所计得的Ns 作为除数相除,除得一个商和余数,其 模块设计 如图 313 所示。 图 313 除法器 rest:复位信号,负脉冲有效; clk:时钟控制信号,输入的是开发板上的 48MHz 的时钟频率; start:开始 信号,高电平有效。 与计数器模块的 ok 信号端相连,当start 被置高时,除法器开始计数; A, B:分别为 被除数和 除数,分别与计数 器的 Nx和 Ns 相连; err:除法出错信号端,当被除数为零时, err 为高电平; ready:通信信号端,用于与单片机通信。 当做完除法时, ready 给出一个负脉冲信号; D, R:分别为除法器除得的商和 余数; 哈尔滨工业大学(威海)本科毕业设计(论文) 17 除法器仿真结果如图 315 所示。 被除数 A=00100000000=256,B=10000=16,求得 D=10000=16, R=0, ready 有个负脉冲的跳变(因为仿真显示区域太小,后面的上升沿没有显示出来)。 图 315 除法器模块仿真结果 除法 控制器 除法控制器是接受控制信号通知后面的除法运算模块进行取数并控制除法运算模块进行运算,当除数为零时产生一个 err 信号,表示运算出错 ,其模块设计 如图 314 所示。 图 314 除法控制器 rest:复位信号,负脉冲有效; clk:时钟控制信号, 输入的是 开发板上 48MHz 的时钟频率; start:开始信号, 高电平有效。 与计数器模块的 ok 信号端相连; load: 运算器开始 数据装载控制信号; run: 运算器开始 运算控制信号; err:数据出错信号端,但被除数为零时, err 被置高; 除法器状态机源程序 [9]: module div_ctl(clk, rest, start, invalid, load, run, err)。 parameter STATE_INIT = 339。 b001。 哈尔滨工业大学(威海)本科毕业设计(论文) 18 parameter STATE_RUN = 339。 b010。 parameter STATE_FINISH = 339。 b100。 input clk, rest, start, invalid。 output load, run, err。 reg [2:0] current_state, next_state。 reg [3:0] count。 reg load, run, err。 always@(current_state or invalid or count ) begin case(current_state) STATE_INIT: begin err=0。 count=0。 load=1。 run=0。 if(start==0) next_state=STATE_INIT。 else next_state=STATE_RUN。 end STATE_RUN: begin load=0。 run=1。 count=count+139。 b1。 if(invalid)//1 begin err=1。 next_state=STATE_FINISH。 end else if(count==3000) next_state=STATE_FINISH。 哈尔滨工业大学(威海)本科毕业设计(论文) 19 end STATE_FINISH: begin load=0。 run=0。 end default: next_state =339。 b000。 endcase end always@(posedge clk or negedge rest) begin if(!rest) current_state=STATE_INIT。 else current_state=next_state。 end endmodule 除法器状态机分为三个状态:一、 STATE_INIT 为初始化状态; 二、 STATE_RU。基于fpga的等精度频率计设计本科毕业设计论文(编辑修改稿)
相关推荐
INT82DEV_OE83IN484GCLCK11IN12DEV_OE3VCCINT4I/O0/DATA75I/O1/DATA66I/O2/DATA57I/O3/DATA48I/O4/DATA39I/O5/DATA210I/O6/DATA111D A T A 012D C L K13n C E14T D I15I / O 716I / O 817I / O 918I / O 1019V C C
y,clk66MHz)。 input clk66MHz。 output clk,clkss,clksy。 reg clk,clkss,clksy。 reg[9:0] count1。 reg[6:0] count2。 reg[7:0] count3。 reg[5:0] count4。 reg cin1,cin2。 always @(posedge clk66MHz) if(count1[9
reg[6:0] count2。 reg[7:0] count3。 reg[5:0] count4。 reg cin1,cin2。 always @(posedge clk66MHz) if(count1[9:0]==1039。 d999) begin count1[9:0]=1039。 d0。 cin1=139。 d1。 //产生进位信号 1 end else begin count1[9
4)用 C 语言完成了系统中单片机控制的的软件设计。 ( 5)对频率计的系统性能进行分析,通过分析得出,本设计的测频范围是~50MHz,测量精度为百万分之一,被测信号的幅度为。 本文分 5 章介绍了基于 FPGA 的等精度数字频率计的设计原理、设计步骤,性能分析等。 兰州交通大学毕业设计(论文) 3 2 系统设计的相关理论 频率测量方法的研究 常用测频方案 在电子技术中,频率是最基本的参数之一
来时,对输入的逻辑信号进行一次移位并输出。 使用 VHDL 语言编程并在 Quartus II 中生成的该模块符号图如图 所示。 CLKLOADD[7..0]Q[7..0]SHIFTXinst 循环移位寄存器的仿真结果如图 所示。 图 中 CLK 为时钟信号, LOAD 为工作信号 , D 为预置信号, Q 为输出观察信号。 从图中可以看出,当时钟信号上升沿到来且 LOAD 信号处于低电平时 ,
0 进行温度采集,将采集到的温度数字直接以数字信号传输给 FPGA 控制器,控制器通过比较采集的温度和用户设置的温度来做出发送降温还是加热的控制信号给空调机。 同时通过 FPGA 芯片还可以实现定时和控制显示,使用 6 个数码管将传感器测量到的温度,设置的温度、定时时长都显示出来。 其方框图 32如下: 图 32 基于 FPGA 的空调控制系统框图 方案论证与确定 通过比较两个方案,方案 1