移存器的VHDL程序如下:
Library ieee
use ieee.std_logic_1164.all
use ieee.std_logic_unsigned.all--以上是定义集合包,是VHDL里面的包
entity yicunqi is--这是定义实体,就是定义器件的输入输出管角,和仔团名称为yicunqi
port(di ,clk :in std_logic --2个输入
q6,q5,q4,q3,q2,q1,q0:out_std_logic --7个逻辑输出
)
end yicunqi
architecture a of yicunqi is--定义结构体,名称为a,属于yicunqi
signal tmp : std_logic_vector(6 downto 0) 定义一个信号变量组,一共7个
begin
process(clk)--clk是触发程序的条件
begin
if (clk'event and clk='1') then --如果CLK有变化且是上升沿触发
tmp(6)<=di--首先赋值
for i in 1 to 6 loop
tmp(6-i)<=tmp(7-i)--循环赋值,将后一个值给前一个,这样就实现移位
end loop
end if
end process
q6<=not tmp(6)--将值取反付给Q6
q5<=tmp(5)
q4<=not tmp(4)
q3<=not tmp(3)
q2<=tmp(2)
q1<=tmp(1)
q0<=tmp(0)
end a
译码器:当七位移位寄存器输出的是“1111111”时,译码器输出就是“111”;有一位错码输出即七位输出中有一个是“0”的时候,译码器输出就是“110”,其它情况输出就为“000”。
译码器的VHDL源程序为:
library ieee
use ieee.std_logic_1164.all
use ieee.std_logic_unsigned.all
entity yimaqi is
port(a,b,c,d,e,f,g:in std_logic
selt :out std_logic_vector(2 downto 0))--输出是一个3位的
end yimaqi
architecture bh of yimaqi is
signal sel: std_logic_vector(6 downto 0)
begin
sel<=a&b&c&d&e&f&g--将abcdefg按位组成一个7位数组形式
process(sel)
begin
case sel is--case语句应该懂吧,C语言有的饿
when"0111111"=>selt<="110"--当sel满足when后面的条件时就把100赋值给selt,后面同
when"1011111"=>selt<="110"
when"1101111"=>selt<="110"
when"1110111"=>selt<="110"
when"1111011"=>selt<="110"
when"1111101"=>selt<="110"
when"1111110"=>selt<="110"
when"1111111"=>selt<="111"
when others=>selt<="000"
end case
end process
end bh
判决器的功能相当于一个比较器。
当巴克码识别器的输出大于等于自动门限的输出时,就输出一个“1”脉唤橘冲,否则就输出“0”脉冲。
判决器的VHDL源程序为:
library ieee
use ieee.std_logic_1164.all
use ieee.std_logic_unsigned.all
entity panjueqi is
port(a : in std_logic_vector(2 downto 0)
b :in std_logic_vector(2 downto 0)
c :buffer std_logic --定义的是数据buffer
)
end panjueqi
architecture bh of panjue is
begin
c<='戚岩1' when a>=b else '0'--当a>=b时c<='1',其他c<='0'
end bh
摘 要:文中运用VHDL语言,采用Top To Down的方法,实现8位数字频率计,并利用Isp Expert集成开发环境进行编辑、综合、波形仿真,并下载到CPLD器件中,经实际电路测试,该系统系统性能可靠。关键词:EDA;VHDL;数字频率计;波形仿真;CPLD�
1引言
VHDL(Very High Speed Integrated Circuit Hardware Description Language,超高速集成电路硬件描述语言)诞生于1982年,是由美国国防部开发的一种快速设计电路的工具,目前已经成为IEEE(The Institute of Electrical and Electronics Engineers)的一种工业标准硬件描述语言。相比传统的电路系统的设计方法,VHDL具有多层次描述系统硬件功能的能力,支持自顶向下(Top to Down)和基于库(LibraryBased)的设计的特点,因此设计者可以不必了解硬件结构。从系统设计入手,在顶层进行系统方框图的划分和结构设计,在方框图一级用VHDL对电路的行为进行描述,并进行仿真和纠错,然后在系统一级进行验证,最后再用逻辑综合优化工具生成具体的门级逻辑电路的网表,下载到具体的CPLD器件中去,从而实现可编程的专用集成电路(ASIC)的设计。
数字频率计是数字电路中的一个典型应用,实际的硬件设计用到的器件较多,连线比较复杂,而且会产生比较大的延时,造成测量误差、可靠性差。随着复杂可编程逻辑器件(CPLD)的广泛应用,以EDA工具作为开发手段,运用VHDL语言。将使整个系统大大简化。提高整体的性能和可靠性。
本文用VHDL在CPLD器件上实现一种8 b数字频率计测频系统,能够用十进制数码显示被测信号的频率,不仅能够测量正弦波、方波和三角波等信号的频率,而且还能对其他多种物理量进行测量。具陪旅有体积小、可靠性高、功耗低的特点。
2数字频率计的基本设计原理
数字频率计的原理框图如图1所示。他主要由5个模块组成,分别是:脉冲发生器电路、测频控制信号发生器电路、计数模块电路、锁存器、译码驱动电路。�
当系统正常工作时,脉冲发生器提供的1 Hz的输入信号,经过测频控制信号发生器进行信号的变换,产生计数信号,被测信号通过信号整形电路产生同频率的矩形波,送入计数模块,计数模块对输入的矩形波进行计数,将计数结果送入锁存器中,保证系统可以稳定显示数据,显示译码驱动电路将二进制表示的计数结果转换成相应的能够在七段数码显示管上可以显示的十进制结果。在数码显示管上可以看到计数结果。�
3设计实现�
3.1系统方框图的划分和结构设计
根据数字频率计的系统原理框图(图1虚线框内),设计系统的顶层电路图如图2所示。�
图2中TESTCTL为测频控制信号发生器。TESTCTL的计数使能信号TSTEN能产生一个1 s宽的周期信号,并对频率计的每一计数器CNT10的ENA使能端进行同步控制:当TSTEN高电平时允许带乱握计数、低电平时停止计数。
REG32B为锁存器。在信号Load的上升沿时,立即对模块的输入口的数据锁存到REG32B的内部,并由REG32B的输出端输出,然后,七段译码器可以译码输出。在这里使用了锁存器,好处是可以稳定显示数据,不会由于周期性的清零信号而不断闪烁。
CNT10为十进制计数器。有一时钟使能输入端ENA,用于锁定计数值。当高电平时允许计数,低电平时禁止计数。图2中将8个十进制计数器CNT10级联起来实现8 b十进制计数功能。
SEVYM为七段译码显示驱动电路,可以将频率计数的结果译成能在数码管上显示相对应的阿拉伯数字,便于读取测量的结果。
为了实现系统功能,测频控制信号发生器TESTCTL、计数器CNT10、锁存器REG32B存在一个工作时序的问题,设计时需要综合考虑。
图3给出了系统的工作时序。图3中CLK是由图1中脉冲发生器产生的频率为1 Hz的标准时钟信号,当测频控制信号发生蠢庆器TESTCTL的TSTEN端为高电平时允许计数、低电平时停止计数,在停止计数期间,测频控制信号发生器TESTCTL的Load端产生一个上升沿,将计数器在前1 s的计数值锁存进32 b锁存器REG32B中,并由8个7段译码器将计数结果译出稳定显示。锁存信号之后经过半个CLK周期,测频控制信号发生器TESTCTL的CLR�_CNT端产生一个上升沿,对计数器进行清零。为下1 s的计数 *** 作做准备。
为了产生这个时序图,首先有一个D触发器构成二分频器,在每次时钟CLK的上升沿到来使其值翻转。D触发器的输出高电平正好是1 s,因此可以作为测频控制信号发生器TESTCTL的TSTEN端,用来控制计数。而Load信号正好是TSTEN端信号的翻转。在计数结束后半个CLK周期,CLK与TSTEN都为低电平,这时CLR�_CNT产生一个上升沿作为清零信号。�
3.2各模块的VHDL源程序
采用VHDL描述数字频率计的电路时,根据图2所示的数字频率计系统顶层电路图,按照自顶向下的设计思路,编写各个模块的VHDL源程序,最后再对各个模块进行组合,编写顶层描述的VHDL源程序,由于篇幅所限,本文仅介绍数字频率计顶层描述的源程序,各个模块的VHDL源程序编写较为简单,可以根据各自的功能,相应地写出。
8位数字频率计的顶层描述VHDL源程序为:
4系统的功能仿真
Lattice公司推出的Isp Expert的数字系统设计软件,是一套完整的EDA软件,能够对所设计的数字电子系统进行时序仿真和功能仿真。
采用Lattice公司推出的Isp Expert EDA软件,对所编写数字频率计VHDL源程序进行编译、逻辑综合,自动地把VHDL描述转变为门级电路。然后进行波形仿真,编写的仿真测试向量文件如下(为仿真简单起见,测试一个66 Hz的周期信号):
仿真后得到的波形图如图4所示,从仿真波形上看测量的结果是准确的。还可以进一步修改测试向量文件,进行波形仿真。最后通过编程电缆,将所设计的内容下载到CPLD器件中,进行实物仿真。�
5结语
本文介绍了使用VHDL语言设计数字频率计的方法,并下载到CPLD中组成实际电路,这样可以简化硬件的开发和制造过程,而且使硬件体积大大缩小,并提高了系统的可靠性。同时在基本电路模块基础上,不必修改硬件电路,通过修改VHDL源程序,增加一些新功能,满足不同用户的需要,实现数字系统硬件的软件化。
1、首先在运行中输入notepad,斗举启动记事本程序。
2、在记事本程序中输入闭销孝需要在Quartus II中录入的汉字,然后选择复制。
3、然后找到并打开Quartus II软件,找到并双击打开目标VHDL文件。
4、将鼠标光标插入到需要录入汉字的位置。使用Ctrl+V,将刚刚复制的汉字粘贴到目标位置。
5、最后注意汉字占用两个字节,删除一个汉字需要按两次删除键轿稿,就完成了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)