文档详情

[EDA课程设计报告频率计.doc

发布:2017-01-18约字共12页下载文档
文本预览下载声明
课 程 设 计 报 告 一、设计目的和要求 课程设计目的 (1).熟悉CPLD的开发软件的基本使用。 (2).理解频率计的测量原理。 (3).掌握CPLD逻辑电路设计方法。 (4).掌握虚拟数字频率计的软件设计。 课程设计的基本要求 在CPLD中设计一个数字频率计电路,设计要求为: 测量范围:1Hz~1MHz 在CPLD中设计一个数字频率计电路,设计要求为: 测量范围:1Hz~1MHz 1)测频控制信号发射器的设计 频率测量的基本原理是计算每秒钟内待测信号的脉冲个数。这就要求TESTCTL的计数使能信号TSTEN能产生一个1秒脉宽的周期信号,并对频率计的每一计数器CNT10的ENA使能端进行同步控制。当TSTEN高电平时,允许计数;低电平时,停止计数,并保持其所计的数。在停止计数期间,首先需要一个锁存信号LOAD的上跳沿将计数器在前1秒钟的计数值锁存进32位锁存器REG32B中,由外部的7段译码器译出并稳定显示,锁存信号之后必须有一清零信号CLR_CNT对计数器进行清零,为下一秒的计数操作作准备。 测频控制信号发生器是先建立一个由D触发器构成的二分频器,再在每次时钟CLK上沿到来时其值翻转。其中,控制信号时钟CLK的频率取1Hz,而信号TSTEN的脉宽恰好是1s,可以用做闸门信号。此时,根据测频的时序要求,可得出信号LOAD和CLR_CNT的逻辑描述。在计数完成后,即计数使能信号TSTEN在1s的高电平后,利用其反相值的上跳沿产生一个锁存信号LOAD,0.5秒后,CLR_CNT产生一个清零信号上跳沿。 寄存器REG32B的设计 设置锁存器的好处是,显示的数据稳定,不会由于周期性的清零信号而不断闪烁。若已有32位BCD码存在于此模块的输入口,在信号LOAD的上升沿后即被锁存到寄存器REG32B的内部,并由REG32B的输出端输出,然后由实验板上的7段译码器译成能在数码管上显示的相对应的数值。 3)十进制计数器CNT10的设计 此十进制计数器的特殊之处是,有一时钟使能输入端ENA,用于锁定当前值。当高电平时允许计数,低电平时计数禁止。 4、设计难点 在设计到最后把各个模块组到一块时,有的端口定义不太容易明确。 设计结果与分析 思路问题以及测试结果失败分析 在做组合freq的模块时,由于对每个端口不明确,所以编程时出现了错误,后来仔细的研究了每个模块的端口,然后把端口定义正确了。 然后对freq的波形图进行仿真,刚开始由于设计的频率太高了,导致在计算的时候要话费太多时间,后来经过老师提点,把end time调成8s和fsin的multipled by调成最大的32000,才把结果调小。最终的结果与理论值几乎没有误差。 程序简要说明 10进制计数器模块 library ieee; use ieee.std_logic_1164.all; entity cnt10 is port(clk:in std_logic; --计数时钟信号 clr:in std_logic; --清零信号 ena:in std_logic; --计数使能信号 cq: out integer range 0 to 15; -4位计数结果输出 carry_out:out std_logic); --计数进位 end entity cnt10; architecture art of cnt10 is signal cqi:integer range 0 to 15; begin process(clk,clr,ena)is begin if clr=1then cqi=0; --计数器异步清零 elsif clkevent and clk=1then if ena=1 then if cqi=9 then cqi=cqi+1; else cqi=0;end if; --等于9,则计数器清零 end if; end if; end process; process(cqi)is begin if cqi=9 then carry_out=1; else carry_out=0;end if; --进位输出 end process; cq=cqi; end architecture art; 在该模块下,定义了控制输入端ena和清零端clr,clk,输出端carry_out ,进数端cq。 仿真图形如下: 32
显示全部
相似文档