量程自动转换数字式频率计的设计_第1页
量程自动转换数字式频率计的设计_第2页
量程自动转换数字式频率计的设计_第3页
量程自动转换数字式频率计的设计_第4页
量程自动转换数字式频率计的设计_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

EDA 课课 程程 设设 计计 量程自动转换数字式频率的设计 题题 目 目 数字频率计的设计数字频率计的设计 学学 院 院 班班 级 级 学学 号 号 姓姓 名 名 指导老师 指导老师 提交时间 提交时间 目录目录 一 一 设计要求设计要求 二 二 设计方案设计方案 1 频率计的工作原理 2 频率计的系统框图 三 详细设计 1 4 位十进制计数模块 1 十进制计数器元件 cnt10v 的设计 2 计数器的顶层设计 3 分频模块的设计 2 闸门控制模的设计 3 可自动换挡基准时钟模块的设计 4 锁存模块的设计 5 译码显示模块的设计与实现 七段数码显示译码管的 VHDL 设计 6 频率计电路顶层原理图的设计 7 实验数据和误差分析 四 总结 五 参考文献 数字频率计的设计 摘要摘要 数字频率计是一种能够测量被测信号频率的数字测量仪 器 它被广泛应用于航天 航空 电子 自动化测量 测控等 领域 本文利用测频原理 设计一个量程自动转换数字式频率 计 主要硬件电路由 Altera 公司生产的复杂可编程逻辑 CPLD EPM7128 构成 复杂可编程逻辑器件 CPLD 芯片 EPM7128SLC84 15 完成各种时序逻辑控制 计数功能 在 QUARTUS II 平台上 用 VHDL 语言编程完成了 CPLD 的软件 设计 编译 调试 仿真和下载 由于本系统采用了先进的 EDA 技术 不但大大缩短了开发研制周期 而且使本系统具有 结构紧凑 体积小 可靠性高 测频范围宽 精度高等优点 关键词关键词 频率计 可编程逻辑器件 VHDL 一 设计要求 1 频率计的测量范围为 1 量程分 10 100和 1000三档 最大MHzKHzKHzKHz 读数分别为 9 99 99 9 999 KHzKHzKHz 2 要求量程可根据被测量的大小自动转换 即当计数器溢出时 产生一个换档信号 让整个计数时间减少为原来的 1 10 从而实现换档功能 3 要求实现溢出报警功能 即当频率高于 999时 产生一报警信号 点亮 LEDKHz 灯 从而实现溢出报警功能 二 设计方案 1 频率计的工作原理 常用的测量频率的方法有两种 一个是测周期法 一个是测频率法 测周期法需要有基准系统时钟频率 在待测信号一个周期内 记录基准时钟频率 s F x T 的周期数 则被测频率可表示为 s N x F s F s N 测频率法就是在一定的时间间隔内内 得到这个周期信号重复变化的次数 则 w T x N 被测频率可表示为 x F x N w T 本设计采用的是直接测频率的方法 2 频率计的系统框图 频率计的系统设计可以分为 4 位 10 进制计数模块 闸门控制模块 锁存器模块 译码显示模块和可自动换档基准时钟模块 其系统框图如图 2 1 所示 可自动换 档基准时 钟模块 闸门 控制 模块 4 位 10 进制计 数模块 译码 显示 模块 锁存 模 块 图 2 1 频率计的系统框 图 其中 可自动换档模块为闸门控制模块提供 3 个档也就是 3 个测量范围的基准时 钟信号 通过计数器的最高位溢出情况来判定工作在第几档 闸门控制模块根据基准时钟信号产生基准时钟信号周期 2 倍的周期使能信号 随 后为锁存器产生一周期性地锁存信号 再然后为计数模块产生一周期性地清零信号 4 位 10 进制计数模块在使能信号和清零信号的控制下对被测信号的波形变化进行 计数 若产生溢出则为自动换档模块输出一换档信号 译码显示模块负责不闪烁的显示被测信号的频率以及数字频率计目前工作的档位 三 详细设计 1 4 位十进制计数器模块 4 位十进制计数器模块包含 4 个级联十进制计数器 用来对施加到时钟脉冲输入 端的待测信号产生的脉冲进行计数 十进制计数器具有计数使能 清零控制和进位扩 展输出 用于计数的时间间隔 计数允许周期 T 由闸门控制模块的控制信号发生器 所产生的使能信号来控制 使能十进制计数器的计数允许周期 T 可由闸门控制模块中 的量程选择输入来决定 这样允许用户选择所希望的被测频率范围 并有效地确定读 出数据中十进制小数点的位置 1 十进制计数器元件 cnt10 的设计 十进制计数器既可采用 QuartusII 的宏元件 74160 也可用 VHDL 语言设计 本设 计采用 VHDL 编写 其源程序如下 LIBRARY IEEE USE IEEE STD LOGIC 1164 ALL USE IEEE STD LOGIC UNSIGNED ALL ENTITY cnt10v IS PORT clr IN STD LOGIC clk IN STD LOGIC cout OUT STD LOGIC en IN STD LOGIC cq OUT STD LOGIC VECTOR 3 DOWNTO 0 END cnt10v ARCHITECTURE example1 OF cnt10v IS BEGIN PROCESS clr clk en VARIABLE cqi STD LOGIC VECTOR 3 DOWNTO 0 BEGIN IF clr 1 THEN cqi OTHERS 0 ELSIF CLK EVENT AND clk 1 THEN IF EN 1 THEN IF cqi 0 END IF END IF END IF IF cqi 9 THEN cout 1 ELSE cout 0 END IF cq cqi END PROCESS END 在源程序中 cout 是计数器进位输出 cq 3 0 是计数器的状态输出 clk 是时钟输 入端 clr 是复位控制输入端 当 clr 1 时 cq 3 0 0 en 是使能控制输入端 当 en 1 时 计数器计数 当 en 0 时 计数器保持状态不变 在项目编译仿真成功后 将设计的十进制计数器电路设置成可调用的元件 cnt10 bsf 用于以下的 4 位十进制计数器的顶层设计 2 计数器的顶层设计 该顶层设计可以用原理图输入的方法完成 在 QUartusII 中 新建一个原理图编 辑窗 从当前的工程目录中调出 4 片十进制计数器元件 cnt10 并按图所示的 4 位十 进制计数器的顶层原理图完成电路连接 如图 3 2 所示 图 3 2 计数模块电路图 3 分频模块的设计 根据设计要求 最小一档的周期是 10ms 即 100Hz 选用 10MHz 的晶振作为 EPM7128 的时针 为得到 1000Hz 的信号需要 100 分频 可知用 2 个 cnt10 级联就可以 实现 图 3 3 是其电路图 图 3 3 分频模块电路图 2 闸门控制模的设计 闸门控制模块主要根据输入的控制时钟脉冲 首先要产生一个锁存信号 LOAD 用其上 升沿控制锁存器将之前的计数结果存入锁存器中 并由显示模块将其显示出来 设置锁存 器是为了让显示稳定 不会因为周期性清零信号使得显示的数值不断闪烁 锁存之后须有 一清零信号 CLR CNT 将计数器清零 为了下一秒的计数操作做准备 闸门控制模块的 VHDL 源程序如下 LIBRARY IEEE USE IEEE STD LOGIC 1164 ALL USE IEEE STD LOGIC UNSIGNED ALL ENTITY TESTCTL IS PORT clk fin IN STD LOGIC clr cnt OUT STD LOGIC tsten OUT STD LOGIC load OUT STD LOGIC END ARCHITECTURE one OF TESTCTL IS SIGNAL a STD LOGIC SIGNAL count STD LOGIC VECTOR 1 downto 0 BEGIN PROCESS clk BEGIN IF clk EVENT AND clk 1 THEN a not a END IF END PROCESS PROCESS fin BEGIN IF fin EVENT AND fin 1 THEN IF a 0 then IF count 11 then load 0 clr cnt 1 ELSE load 1 count count 1 clr cnt 0 END IF ELSE count 00 load 0 clr cnt 0 END IF END IF END PROCESS tsteny input0 oy input1 oy input2 oy 0 onull END CASE END PROCESS END 图中将所有计数器的清零信号接地 因为清零信号为高电平有效 接地信号一直保持 低电平 这样保证计数器不会被清零 一直正常工作 所有计数器的使能端需要一个高电 平信号 EN 使其一直保持正常工作 最后一个计数器并不属于实现基准信号换挡功能的计数 器组 它直接为三选一选择器 mux3 服务 统计来自 4 位十进制计数器模块的最高位进位信 号的个数 Y 输出端输出已经调整了的适合于被测频率的基准时钟信号 4 锁存模块的设计 锁存模块的功能是将 4 个十进制计数器的数据 在 LOAD 信号有效时 LOAD 1 锁存到 寄存器中 其 VHDL 源程序如图所示 LIBRARY IEEE USE IEEE STD LOGIC 1164 ALL ENTITY REG16 IS PORT DIN0 IN STD LOGIC VECTOR 3 DOWNTO 0 DIN1 IN STD LOGIC VECTOR 3 DOWNTO 0 DIN2 IN STD LOGIC VECTOR 3 DOWNTO 0 DIN3 IN STD LOGIC VECTOR 3 DOWNTO 0 LOAD IN STD LOGIC DOUT0 OUT STD LOGIC VECTOR 3 DOWNTO 0 DOUT1 OUT STD LOGIC VECTOR 3 DOWNTO 0 DOUT2 OUT STD LOGIC VECTOR 3 DOWNTO 0 DOUT3 OUT STD LOGIC VECTOR 3 DOWNTO 0 END REG16 ARCHITECTURE one OF REG16 IS BEGIN PROCESS LOAD BEGIN IF LOAD event and LOAD 1 THEN DOUT0 DIN0 DOUT1 DIN1 DOUT2 DIN2 DOUT3doutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutnull end case end process end example2 程序中 din 是 0 9 的 BCD 码输入 dout 为译码后的 7 段数据信号 SEL 是数码管的 位选信号 一位 进制的 源程序如下 library IEEE use ieee std logic 1164 all use ieee std logic unsigned all entity cnt16v is port clk in std logic cout out std logic en in std logic cq out std logic vector 1 downto 0 end cnt16v ARCHITECTURE examplel of cnt16v is begin process clk variable cqi std logic vector 1 downto 0 begin if clk event and clk 1 then if cqi 0 end if end if if cqi 15 then cout 1 else cout 0 end if cqyyyynull END CASE END PROCESS END example6 library ieee use ieee std logic 1164 all entity choose decoder is port sel in std logic vector 1 downto 0 choose out std logic vector 3 downto 0 end choose decoder architecture rtl of choose decoder is begin process sel begin case sel is when 00 choosechoosechoosechoosechoose ZZZZ end case end process end rtl 由于实验时没有 的量程 所以我们选用 的量程用分频器实现实验的 要求 且分频器的 的源程序如下 library ieee use ieee std logic 1164 all use ieee std logic arith all use ieee std logic unsigned all entity div is port clk in std logic rst in std logic divclk out std logic end div architecture behavioral of div is signal divcounter std logic vector 20 downto 0 signal div clk std logic begin process clk rst begin if rst 1 then divcounter 000000000000000000000 div clk 0 elsif rising edge clk then if divcounter 101101110001101011111 then divcounter 000000000000000000000 div clk not div clk else divcounter divcounter 1 end if end if end process divclk div clk end behavioral 6 频率计电路顶层原理图的设计 1 频率计主体电路顶层原理图设计 在成功完成低层单元电路模块设计仿真后 可根据测频原理框图 可完成图 3 7 所示 的频率计电路顶层原理图的设计文件 该电路中定时信号模块 控制信号发生器模块 4 位十进制计数器模块 寄存显示模块为前面设计低层单元电路模块 clk 为系统基准输入 信号 FIN 为待测频率信号 本设计测试中用 3 个发光二级管表示量程状态显示 OVER 是进 位扩展信号 用于超量程提示功能 在超出目前量程档次时发出报警信号 驱动 LED 发光 报警 在 QuartusII 利用原理图输入对频率计电路顶层原理图 TOP qpf 编译仿真正确无误 后 即可生成如图所示图 3 9 所示 需要说明的是图中的输出 LOAD 并不需要 是为了便于 仿真而添加的 图 量程自动转换数字式频率计的顶层设计图 7 实验数据和误差分析 输入值 HZ 测量值 KHZ 误差 7500007601 3 6555666 4 1 32 1638416 3840 2560 261 56 640 0614 68 160 0156 25 40 0040 四 总结 经过一个多星期的课程设计 通过对各种资料的查阅 我发现了自己动手 的乐趣 以前所学的知识都被局限于课本之中 这次通过课程设计我体会到了 只要勇于探索和吸收 知

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论