1、 【要求要求】掌握掌握VHDL语言中的各模块的设计及最后各模块的组装语言中的各模块的设计及最后各模块的组装 【知识点知识点】理解理解EDA的分频设计的分频设计 理解理解VHDL程序计数器的设计程序计数器的设计 理解理解VHDL程序锁存器的设计程序锁存器的设计 理解理解VHDL程序档位转换及数码管显示的设计程序档位转换及数码管显示的设计 理解理解VHDL程序元件的例化与组装程序元件的例化与组装 【重点和难点重点和难点】频率计的测频原理频率计的测频原理 VHDL程序计数器的设计程序计数器的设计 VHDL程序数码管显示的设计程序数码管显示的设计下一页第第7章章 应用应用VHDL语言方法设计语言方法设
2、计 具有换挡功能的四位数字频率计具有换挡功能的四位数字频率计第第7章章 应用应用VHDL语言方法设计语言方法设计 八位二进制加法器八位二进制加法器7.1 工作任务的陈述与背景工作任务的陈述与背景7.2 完成工作任务的引导完成工作任务的引导7.3 相关技术基本知识与基本技能相关技术基本知识与基本技能7.3 本章小结本章小结上一页一、任务的陈述一、任务的陈述 设计一带进位功能的四位数码管显示的频率计,其卞要参数如下设计一带进位功能的四位数码管显示的频率计,其卞要参数如下:频率计的测量范围为频率计的测量范围为:0 Hz1 MHz;频率计具有自动量程转化功能频率计具有自动量程转化功能;频率计通过四位数
3、码管显示测量的频率。频率计通过四位数码管显示测量的频率。二、项目的背景二、项目的背景 频率计的基本原理是用一个频率稳定度高的频率源作为基准时钟,频率计的基本原理是用一个频率稳定度高的频率源作为基准时钟,对比测量其他信号的频率。通常情况下计算每秒内待测信号的脉冲个对比测量其他信号的频率。通常情况下计算每秒内待测信号的脉冲个数,此时我们称闸门时间为数,此时我们称闸门时间为1 s。闸门时间也可以大于或示于闸门时间也可以大于或示于1 s。闸门时间越长,得到的频率值就越准确,但闸门时间越长则每测一次闸门时间越长,得到的频率值就越准确,但闸门时间越长则每测一次频率的间隔就越长频率的间隔就越长;闸门时间越短
4、,测得频率值刷新就越快,但测得闸门时间越短,测得频率值刷新就越快,但测得的频率精度就受影响。的频率精度就受影响。7.1 工作任务的陈述与背景工作任务的陈述与背景返 回下一页7.2 完成工作任务的引导完成工作任务的引导一、资讯一、资讯 由前述可知,要完成好该工作任务,需要准备以下几个方面的知识由前述可知,要完成好该工作任务,需要准备以下几个方面的知识:时钟分频的原理及实现的方法。时钟分频的原理及实现的方法。计数器的知识。计数器的知识。信号锁存的原理。信号锁存的原理。数码管译码显示、片选及动态扫描的知识。数码管译码显示、片选及动态扫描的知识。数字频率计的工作原理。数字频率计的工作原理。二、计划二、
5、计划 数字频率计的测频方法有等精度测频和计数测频,从实现的技术数字频率计的测频方法有等精度测频和计数测频,从实现的技术手段来看目前可采取的有手段来看目前可采取的有:下一页上一页7.2 完成工作任务的引导完成工作任务的引导 采用示规模数字集成电路制作采用示规模数字集成电路制作;采用单片机进行测频控制采用单片机进行测频控制;采用现场可编程门阵列采用现场可编程门阵列(FPGA)为控制核心。为控制核心。三、决策三、决策 采用现场可编程门阵列采用现场可编程门阵列(FPGA)为控制核心,利用为控制核心,利用VHDL语言编程,语言编程,将所有器件集成在一块芯片上,体积大大减示的同时还提高了稳定性,将所有器件
6、集成在一块芯片上,体积大大减示的同时还提高了稳定性,可实现大规模和超大规模的集成电路,测频测量精度高,测量频率范可实现大规模和超大规模的集成电路,测频测量精度高,测量频率范围大,而且编程灵活、调试方便。围大,而且编程灵活、调试方便。综合上述分析,本设计采用现场可编程门阵列综合上述分析,本设计采用现场可编程门阵列(FPGA)为控制核心为控制核心测量方案。测量方案。下一页上一页四、实施四、实施 (一一)设计任务的详细描述设计任务的详细描述 设计一个频率计,其频率测量范围为设计一个频率计,其频率测量范围为1 Hz1 MHz,显示器件为,显示器件为4个个8段数码管段数码管(带示数显示带示数显示)。根据
7、测量所得的结果,可以白动转换量。根据测量所得的结果,可以白动转换量程来显示输出的结果程来显示输出的结果:如频率为如频率为100 Hz,显示为,显示为F100;如频率为如频率为5 kHz,显示为,显示为5.000;如频率为如频率为50 kHz,显示为显示为50.00;如频率为如频率为500 kHz,显示为,显示为500.0;当输入的频率超过量程当输入的频率超过量程(1 MHz)时,数码管灭时,数码管灭(不显示不显示)。7.2 完成工作任务的引导完成工作任务的引导 为了与实际工程设计更贴近,我们选择天津启东科技公司的为了与实际工程设计更贴近,我们选择天津启东科技公司的TQD-CYC 1C3 FPG
8、A+MCU开发板作为项目的硬件开发平台,整开发板作为项目的硬件开发平台,整个项目代码最后下载至开发板上进行验证个项目代码最后下载至开发板上进行验证(相关程序代码稍做修改也相关程序代码稍做修改也可用于康芯可用于康芯GW48EDA_PK2/PK3实验箱上实验箱上)。(二二)设计方案设计方案 计划将整个项目在开发板上实现。根据开发板上的硬件电路及设计划将整个项目在开发板上实现。根据开发板上的硬件电路及设计任务的要求,对系统设计方案进行化分,将整个项目进行模块划分。计任务的要求,对系统设计方案进行化分,将整个项目进行模块划分。1.时钟模块时钟模块 开发板上系统的时钟为开发板上系统的时钟为20 MHz,
9、如,如图图7-1所示。所示。测频的闸门信号为测频的闸门信号为1 S的高电平信号,同时将测频所得结果显示出的高电平信号,同时将测频所得结果显示出来,在数码管显示时采用动态扫描的方法,需要产生来,在数码管显示时采用动态扫描的方法,需要产生1 kHz的扫描信的扫描信下一页上一页7.2 完成工作任务的引导完成工作任务的引导号,所以要对系统的号,所以要对系统的20 MHz时钟信号进行分频,以产生符合要求的时钟信号进行分频,以产生符合要求的各频率信号各频率信号:先由系统时钟先由系统时钟20 MHz分频出分频出1 kHz,再由,再由1 kHz分频出分频出1 Hz,由由1 Hz的信号产生的信号产生1 s的计数
10、闸门信号脉冲。该模块作为系统的第一的计数闸门信号脉冲。该模块作为系统的第一个模块,还要接受测量信号的输入,同时我们还给整个系统定义系统个模块,还要接受测量信号的输入,同时我们还给整个系统定义系统复位。复位。由以上分析,可得出该模块的系统框图如由以上分析,可得出该模块的系统框图如图图7-2所示。所示。图图7-2中,中,Reset为复位引脚,为复位引脚,clk为开发板系统时钟的输入,为开发板系统时钟的输入,clklk为为1 kHz的输出信号,的输出信号,tgate为为1 s的闸门输出信号。的闸门输出信号。下一页上一页7.2 完成工作任务的引导完成工作任务的引导 2.计数模块计数模块(图图7-3)在
11、闸门脉冲电平为在闸门脉冲电平为1时闸门开启,计数器开始计数,在闸门脉冲电时闸门开启,计数器开始计数,在闸门脉冲电平为平为0时,闸门关闭,计数器停止计数。时,闸门关闭,计数器停止计数。同时,锁存器产生一个锁存信号输送到锁存器的使能端将结果锁存,同时,锁存器产生一个锁存信号输送到锁存器的使能端将结果锁存,并把锁存结果输送到译码器来控制七段显示器,这样就可以得到被测并把锁存结果输送到译码器来控制七段显示器,这样就可以得到被测信号的数字显示的频率。信号的数字显示的频率。在闸门脉冲的下降沿到来时控制电路将计数器情零,为下一次测量在闸门脉冲的下降沿到来时控制电路将计数器情零,为下一次测量做准备,实现了可重
12、复使用,避免两次测量结果相加使结果产生错误。做准备,实现了可重复使用,避免两次测量结果相加使结果产生错误。在整个电路中,计数模块电路是关键,闸门信号脉冲宽度是否精确在整个电路中,计数模块电路是关键,闸门信号脉冲宽度是否精确直接决定了测量结果是否精确。直接决定了测量结果是否精确。下一页上一页7.2 完成工作任务的引导完成工作任务的引导下一页上一页7.2 完成工作任务的引导完成工作任务的引导 3.锁存模块锁存模块(图图7-4)锁存器在闸门信号关闭前锁存器在闸门信号关闭前(检测闸门信号下降沿检测闸门信号下降沿)实现锁存,并把实现锁存,并把锁存结果输送到译码器来控制八段数码显示器。锁存结果输送到译码器
13、来控制八段数码显示器。4.显示模块显示模块(图图7-5)显示模块将锁存模块送过来的数值进行译码显示,并根据锁存模显示模块将锁存模块送过来的数值进行译码显示,并根据锁存模块送来的挡位信号确定示数点显示的位置以实现挡位的显示。块送来的挡位信号确定示数点显示的位置以实现挡位的显示。(三三)模块的设计及实现模块的设计及实现1.时钟分频时钟分频 分频原理及分频系数的设定分频原理及分频系数的设定:开发板的时钟频率设为开发板的时钟频率设为20 MHz,而为了给其他模块提供所需的各,而为了给其他模块提供所需的各时钟,需对时钟,需对20 MHz的时钟进行分频的时钟进行分频:从从20 MHz分频得到分频得到1 k
14、Hz;从从1 kHz分频得到分频得到1 Hz;由由1 Hz得到占空比为得到占空比为1/4高电平时间为高电平时间为1 s的闸门信号。的闸门信号。分频原理及分频系数的设定分频原理及分频系数的设定:为了从为了从20 MHz分频得到分频得到1 kHz,我们设定为一次分频,即由我们设定为一次分频,即由20 MHz分频为分频为1 MHz,由,由1 MHz分频分频得得1 kHz。须设定分频的系数。须设定分频的系数:20 MHz与与1 MHz相差相差20倍,倍,20/2=10,设定分频变量为,设定分频变量为09,1 MHz与与1 kHz相差相差1 000倍,倍,1 000/2=500,所以可以设分频的变量为,
15、所以可以设分频的变量为VARIABLE cnt:INTEGERRANGE 0 TO 499,而从,而从1 kHz分频得到分频得到1 Hz,设分,设分频变量为频变量为0499。下一页上一页7.2 完成工作任务的引导完成工作任务的引导 2.计数模块计数模块 (1)计数的原理及采用的计数方法计数的原理及采用的计数方法 采用在闸门信号开启期间对输入信号脉冲进行计数的方法进行测频,采用在闸门信号开启期间对输入信号脉冲进行计数的方法进行测频,当闸门信号开启时计数,当闸门信号关闭时停止计数,在当闸门信号开启时计数,当闸门信号关闭时停止计数,在1 s内计得的内计得的脉冲数即为输入信号的频率。由于频率计的计数值
16、最大为脉冲数即为输入信号的频率。由于频率计的计数值最大为1M,因此代,因此代码中用码中用6个信号量个信号量(c1c6)来存储从第一位至第六位相对应的每一位来存储从第一位至第六位相对应的每一位的数值。从的数值。从c1 c6为逢为逢10进一位,所以进一位,所以c1 c6中存储的是输入信中存储的是输入信号的十进制的数值。号的十进制的数值。(2)计数值的挡位划分计数值的挡位划分 由于数码管显示的为由于数码管显示的为4位数值,而计数值最高为位数值,而计数值最高为6位数值,因此对计位数值,因此对计数值进行分挡编码,以便用数值进行分挡编码,以便用4位数码管通过示数点的定位来显示位数码管通过示数点的定位来显示
17、6位数位数下一页上一页7.2 完成工作任务的引导完成工作任务的引导值。当计数值示于值。当计数值示于4位计数值时,数码管尤示数位数显示位计数值时,数码管尤示数位数显示;当计数当计数值大于值大于4位计数值时,取计数值高位计数值时,取计数值高4位,通示数点定位来显示数值。位,通示数点定位来显示数值。挡位划分见挡位划分见表表7-1。3.锁存模块锁存模块 在闸门信号的下降沿,对输入的在闸门信号的下降沿,对输入的16位的计数值位的计数值q及挡位信号及挡位信号scale进行锁存,由于锁存是对闸门信号的下降沿进行检测完成锁进行锁存,由于锁存是对闸门信号的下降沿进行检测完成锁存的,因此能将存的,因此能将scal
18、e数值在数值在reset复位复位(计数模块中的端口信计数模块中的端口信)前前锁存。锁存。锁存模块的作用锁存模块的作用:设置锁存模块,既可避免计数值的丢失,还可设置锁存模块,既可避免计数值的丢失,还可以避免闸门信号计数期间,频率计的显示随着计数值的增加不断变以避免闸门信号计数期间,频率计的显示随着计数值的增加不断变化、闪烁。化、闪烁。下一页上一页7.2 完成工作任务的引导完成工作任务的引导4.显示模块显示模块 将计数器所计得的数值显示出来,并通过挡位信号,完成示数点定将计数器所计得的数值显示出来,并通过挡位信号,完成示数点定位显示,通过显示示数点位置不同的数值来完成相应挡位的自动转换。位显示,通
19、过显示示数点位置不同的数值来完成相应挡位的自动转换。显示模块对数值的显示译码要与设计的数码管驱动电路相对应。开发板显示模块对数值的显示译码要与设计的数码管驱动电路相对应。开发板上的数码管为上的数码管为6连排数码管,它们的位段信号端连排数码管,它们的位段信号端(称为数据端称为数据端)接在一起,接在一起,同时还有同时还有6个位选信号个位选信号(称为控制端称为控制端)用于分别选中要显示数据的数码管。用于分别选中要显示数据的数码管。根据开发板的电路及设计要求,显示模块采用显示采用扫描驱动显示,根据开发板的电路及设计要求,显示模块采用显示采用扫描驱动显示,并以七段译码的方式输出。并以七段译码的方式输出。
20、5.顶层模块顶层模块 采用原理图方式进行组装,具体方法参考采用原理图方式进行组装,具体方法参考7.3节有关内容。节有关内容。下一页上一页7.2 完成工作任务的引导完成工作任务的引导五、检查五、检查 分别编译各底层模块和整个电路设计,并分别仿真时钟分频、计分别编译各底层模块和整个电路设计,并分别仿真时钟分频、计数模块、锁模块、显示模块、顶层模块。通过后,若有条件,应将数模块、锁模块、显示模块、顶层模块。通过后,若有条件,应将源代码下载到硬件中做最后的验证。源代码下载到硬件中做最后的验证。六、评估六、评估 对本次设计进行评估,可尝试更好的方案、方法。写出设计报告,对本次设计进行评估,可尝试更好的方
21、案、方法。写出设计报告,设计报告应包括所应用到的设计报告应包括所应用到的EDA方法及知识的总结。方法及知识的总结。返 回上一页7.2 完成工作任务的引导完成工作任务的引导一、时钟模块参考设计一、时钟模块参考设计-clock.vhd-LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY clock IS PORT(7.3 相关技术基础知识与基本技能相关技术基础知识与基本技能下一页下一页上一页7.3 相关技术基础知识与基本技能相关技术基
22、础知识与基本技能 -复位信号复位信号 reset:IN STD_LOGIC;clk:IN STD_LOGIC;-闸门信号闸门信号 tgate:OUT STD_LOGIC;-1 kHz显示扫描时钟显示扫描时钟 clklk:OUT STD_LOGIC );END clock;ARCHITECTURE rtl of clock IS-常数说明常数说明CONSTANT RESET ACTIVE :STD LOGIC:=1;下一页上一页7.3 相关技术基础知识与基本技能相关技术基础知识与基本技能-信号说明信号说明 SIGNAL c1k1M_reg:STD_LOGIC;SIGNAL clklk_reg:S
23、TD_LOGIC;SIGNAL c1k1Hz:STD_LOGIC;SIGNAL tgate_reg:STD_LOGIC;BEGIN-1MHz时钟时钟 -ClkIM_Proc:PROCESS(reset,clk)VARIABLE cnt0:INTEGER RANGE 0 TO 9;下一页上一页BEGIN IF reset=RESET ACTIVE THEN cnt0:=0;ELSIF rising_edge(clk)THEN IF cnt0=9 THEN cnt0:=0;c1k1M_reg=not c1k1M_reg;ELSE cnt0:=cnt0+1 END IF;END IF;END PRO
24、CESS;7.3 相关技术基础知识与基本技相关技术基础知识与基本技能能-1 kHz显示扫描时钟显示扫描时钟-Clklk_Froc:PROCESS(reset,clklM_reg)VARIABLE cnt:INTEGER RANGE 0 TO 500;BEGIN IF reset=RESET ACTIVE THEN cnt:=0;ELSIF rising_edge(c1k1M_reg)THEN IF cnt=499 THEN cnt:=0;clk lk_reg=not clk lk_reg;下一页上一页7.3 相关技术基础知识与基本技能相关技术基础知识与基本技能 ELSE cnt:=cnt+1;
25、END IF;END IF;END PROCESS;clklk=clklk_reg;-1 kHz分频得到分频得到1 Hz-Clk1Hz_Proc:PROCESS(reset,clklk_reg)VARIABLE cnt2:INTEGER RANGE 0 TO 499;下一页上一页7.3 相关技术基础知识与基本技能相关技术基础知识与基本技能 BEGIN IF reset=RESET ACTIVE THEN cnt2:=0;ELSIF rising_edge(clklk_reg)THEN IF cnt2-499 THEN cnt2:=0;clkl Hz=not c1k1Hz;ELSE cnt2:=
26、cnt2+1;END IF;END IF;END PROCESS;下一页上一页7.3 相关技术基础知识与基本技能相关技术基础知识与基本技能下一页上一页7.3 相关技术基础知识与基本技能相关技术基础知识与基本技能-一占空比为一占空比为1/4频率为频率为0.25 Hz的闸门信号的闸门信号-Tgate_Froc:PROCESS(reset,clklHz)VARIABLE cnt3:INTEGER RANGE 0 TO 3;BEGIN IF reset=RESET ACTIVE THEN cnt3:=0;tgate_reg=0;ELSIF rising_edge(c1k1Hz)THEN IF cnt3
27、=2 THEN tgate reg=1;cnt3:=3;ELSIF cnt3=3 THEN tgate_reg=0;cnt3:=0;ELSE cnt3:=cnt3+1;END IF;END IF;END PROCESS;tgate=tgate_reg;END rtl;下一页上一页7.3 相关技术基础知识与基本技能相关技术基础知识与基本技能工程项目的建立及仿真工程项目的建立及仿真:首先打开首先打开Quartus软件,选择建立新工程项目选项,在出现的器件软件,选择建立新工程项目选项,在出现的器件选择窗口中可选择开发板所用的芯片选择窗口中可选择开发板所用的芯片EP1C3144C8(也可在以后锁定也可
28、在以后锁定引脚时指定芯片的型号引脚时指定芯片的型号),如,如图图7-6所示。所示。按提供的示例代码建立按提供的示例代码建立clokc.vhd文件后编译。编译通过则说明文件后编译。编译通过则说明clokc.vhd文件没有语法错误,但不一定符合设计的要求,为了验证文件没有语法错误,但不一定符合设计的要求,为了验证文件是否符合设计,须对该文件建行仿真。文件是否符合设计,须对该文件建行仿真。时钟模块时钟模块clokc.vhd的仿真步骤如下的仿真步骤如下:1.仿真文件的建立仿真文件的建立(图图7-7)2.添加仿真的各个端口添加仿真的各个端口(图图7-8)3.设计各仿真的参数设计各仿真的参数下一页上一页7
29、.3 相关技术基础知识与基本技能相关技术基础知识与基本技能 设定输入端口设定输入端口clk的频率为的频率为20 MHz;由于只击对模块功能进行验证,修改仿真的模式为由于只击对模块功能进行验证,修改仿真的模式为Functional,如,如图图7-9所示。所示。对时钟模块仿真时要特别注意,由于从对时钟模块仿真时要特别注意,由于从20 MHz分频至分频至0.25 Hz 闸门信号的仿真运算量太大,是无法完成一个闸门信号周期的仿真的。闸门信号的仿真运算量太大,是无法完成一个闸门信号周期的仿真的。但由时钟模块的但由时钟模块的VHDL文件可以看出,我们是分步完成分频的,从文件可以看出,我们是分步完成分频的,
30、从20 MHz分频到分频到1 kHz与从与从1 kHz分频到分频到0.25 Hz的算法是一致的,所的算法是一致的,所以只需仿真出以只需仿真出1 kHz信号即可认为时钟模块代码是正,确。信号即可认为时钟模块代码是正,确。设定仿真的时间为设定仿真的时间为10 ms,仿真结果如,仿真结果如图图7-10所示。所示。查看仿真查看仿真结果可知,结果可知,clklk输出信号的周期为输出信号的周期为1 ms,程序达到了分频要求。,程序达到了分频要求。下一页上一页 7.3 相关技术基础知识与基本技能相关技术基础知识与基本技能二、计数模块参考设计二、计数模块参考设计 -counter.vhd-LIBRARY IE
31、EE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY counter IS port(-全局复位全局复位 reset:IN STD_LOGIC;下一页上一页7.3 相关技术基础知识与基本技能相关技术基础知识与基本技能 -闸门信号闸门信号 tgate:IN STD_LOGIC;-待测信号待测信号 tsig:IN STD_LOGIC;-计数输出计数输出 q:OUT STD_LOGIC_VECTOR(15 DOWNTO 0);-挡位输出挡位输出 scale:
32、OUT STD_LOGIC_VECTOR(2 DOWNTO 0);END counter;ARCHITECTURE rtl of counter IS-常数说明常数说明CONSTANT RESET_ACTIVE:STD_LOGIC:=0;下一页上一页7.3 相关技术基础知识与基本技能相关技术基础知识与基本技能-信号说明信号说明SIGNAL c1:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL c2:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL c3:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL c4:STD_LOGIC
33、_VECTOR(3 DOWNTO 0);SIGNAL c5:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL c6:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL scale_reg:STD_LOGIC_VECTOR(2 DOWNTO 0);SIGNAL overflow:STD_LOGIC;BEGINCOUNT_PROC:PROCESS(reset,tsig,tgate)下一页上一页7.3 相关技术基础知识与基本技能相关技术基础知识与基本技能 BEGIN IF reset=RESET ACTIVE THEN c1=0000;c2=0000;c3=
34、0000;c4=0000;c5=0000;c6=0000;overflow=0;ELSIF rising_edge(tsig)THEN IF tgate=1 THEN 下一页上一页7.3 相关技术基础知识与基本技能相关技术基础知识与基本技能IF c1”1001 THEN c1=c1+1;ELSE c1=0000;IF c21001 THEN c2=c2+1;ELSE c2=0000;IF c3”1001 THEN c3=c3+1;ELSE c3=0000;下一页上一页7.3 相关技术基础知识与基本技能相关技术基础知识与基本技能 IF c4”1001 THEN c4=c4+1;ELSE c4=0
35、000;IF c5”1001 THEN c5=c5+1;ELSE c5=0000;IF c6”1001 THEN c6=c6+1;ELSE -计数溢出计数溢出 overflow=1;下一页上一页7.3 相关技术基础知识与基本技能相关技术基础知识与基本技能 END IF;END IF;END IF;END IF;END IF;END IF;END IF;END IF;END PROCESS:SCALE_PROC:PROCESS(reset,cl,c2,c3,c4,c5,c6,overflow)BEGIN IF reset=RESET ACTIVE THEN 下一页上一页7.3 相关技术基础知识与
36、基本技能相关技术基础知识与基本技能 scale_ref=1MHz scale_ref=001;ELSIF c6/=0000 THEN -100.0 kHz-999.9 kHz q=c6&c5&c4&c3;scale_ref=010;ELSIF c5/=0000 THEN -10.00 kHz一一99.99 kHz q=c5&c4&c3&c2;scale_reg=011;下一页上一页7.3 相关技术基础知识与基本技能相关技术基础知识与基本技能下一页上一页7.3 相关技术基础知识与基本技能相关技术基础知识与基本技能 ELSIF c4/=0000 THEN -1.000 kHz一一9.999kHz
37、q=c4&c3&c2&c1;scale_ref=”100;ELSE -1Hz-999Hz q=”1111&c3&c2&c1;scale_ref=”101;END IF;END PROCESS;scale=scale_reg;END rtl;下一页上一页 计数模块对应不同频率时仿真的输出数值和对应的挡位输出。计数模块对应不同频率时仿真的输出数值和对应的挡位输出。计数模块中将复位信号与闸门信号相连,当闸门信号关闭时计计数模块中将复位信号与闸门信号相连,当闸门信号关闭时计数模块复位情零,所以计数模块为低电平复位。在设定复位信号与数模块复位情零,所以计数模块为低电平复位。在设定复位信号与闸门信号脉冲时
38、应使两者信号一致。闸门信号脉冲时应使两者信号一致。设定输入信号频率为设定输入信号频率为5 000 Hz(周期为周期为200 s),如如图图7-11所示。所示。仿真结果如仿真结果如图图7-12所示。所示。仿真所得结果数值的判断仿真所得结果数值的判断:输入输入5 000 Hz信号,正确,与挡位相符合。信号,正确,与挡位相符合。由于由于q是输出端口,输出的数值为是输出端口,输出的数值为q=5000,输出的挡位输出的挡位7.3 相关技术基本知识与基本技能相关技术基本知识与基本技能下一页上一页为为100,计数值在,计数值在reset情零前已输出至端口,因此闸门信号关情零前已输出至端口,因此闸门信号关闭后
39、数值不改变,而闭后数值不改变,而scale输出端口是通过信号输出端口是通过信号scale_reg传递传递数值的,在数值的,在SCALE_PROC进程中,由于进程中,由于 IF reset=RESET_ACTIVE THEN scale reg=000;因而仿真在闸门信号关闭后输出为因而仿真在闸门信号关闭后输出为0,但可以通过后面的锁存,但可以通过后面的锁存模块,通过对闸门信号下降沿的检测完成对模块,通过对闸门信号下降沿的检测完成对scale情零前的锁存情零前的锁存输出。输出。scale挡位随挡位随q计数值的改变计数值的改变:当当q计数值由二位数变化为计数值由二位数变化为四位数后,四位数后,sc
40、ale挡位应由挡位应由101变化为变化为100。7.3 相关技术基本知识与基本技能相关技术基本知识与基本技能下一页上一页7.3 相关技术基本知识与基本技能相关技术基本知识与基本技能 对对scale数值由数值由101变化为变化为100处的仿真图形放大观察,可以处的仿真图形放大观察,可以看到此时看到此时q的数值由的数值由999变化为变化为1 000,与挡位转换表的要求相符,与挡位转换表的要求相符,如如图图7-13所示。所示。将仿真图形放大,查看输入信号脉冲计数及相应的进位,如将仿真图形放大,查看输入信号脉冲计数及相应的进位,如图图7-14所示所示。由仿真图形可知,对输入信号的每一个脉冲,计数信号由
41、仿真图形可知,对输入信号的每一个脉冲,计数信号c1都增加都增加1,当,当c1增增加至加至10时,时,c1情零并向情零并向c2进一位,符合我们十进制数的进一位,符合我们十进制数的计数和进位要求。计数和进位要求。由仿真所得的结果,可知设计达到了要求。由仿真所得的结果,可知设计达到了要求。下一页上一页7.3 相关技术基本知识与基本技相关技术基本知识与基本技能能三、锁存模块参考设计三、锁存模块参考设计-lock.vhd-LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_
42、ARITH.ALL;ENTITY lock IS PORT(-闸门信号闸门信号 tgate:IN STD_LOGIC;下一页上一页 -输入信号输入信号 q_in:IN STD_LOGIC_VECTOR(15 DOWNTO 0);scale_in:IN STD_LOGIC_VECTOR(2 DOWNTO 0);-锁存信号锁存信号 q-lock:OUT STD_LOGIC_VECTOR(15 DOWNTO 0);scale_lock:OUT STD_LOGIC_VECTOR(2 DOWNTO 0);END lock;ARCHITECTURE rtl of lock IS 7.3 相关技术基本知识与
43、基本技能相关技术基本知识与基本技能 BEGIN LOCK_PROC:PROCESS(tgate)BEGIN IF falling_edge(tgate)THEN q_lock=q_in;scale_lock Fresent_State_Register:PROCESS(reset,clklk);BEGIN IF reset=RESET ACTIVE THEN count=11 THEN count=00;ELSE count=count+O1;END IF;END IF;CASE count IS7.3 相关技术基本知识与基本技能相关技术基本知识与基本技能下一页上一页7.3 相关技术基本知识与
44、基本技能相关技术基本知识与基本技能 -第一个数码管亮第一个数码管亮 sel_reg=0001;q_reg sel_reg=0010;q_reg sel reg=0100;q_reg sel_reg=”1000;q_reg -所有数码管全灭所有数码管全灭 sel_reg=0000;q_red=0000;END CASE;END PROCESS;-注意注意:show reg不包含示数点位不包含示数点位 下一页上一页 WITH q_reg SELECT show_reg=0111111 WHEN 0000,0000110 WHEN 0001,1011011 WHEN 0010,1001111 WHE
45、N 0011,1100110 WHEN 0100,1101101 WHEN 0101,1111101 WHEN 0110,0100111 WHEN 0111,1111111 WHEN”1000,1101111 WHEN”1001,0000000 WHEN others;7.3 相关技术基本知识与基本技能相关技术基本知识与基本技能show=1&show reg WHEN(sel_reg=0010 AND scale=010)OR (sel_reg=0100 AND scale=01l)OR (sel_reg=”1000 AND scale=”100)ELSE -超量程时,超量程时,4位数码管全灭
46、位数码管全灭 00000000 WHEN scale=001 ELSE 0&show_reg;sel=sel_reg;END rtl;7.3 相关技术基本知识与基本技能相关技术基本知识与基本技能下一页上一页程序代码解释程序代码解释:数码管的显示代码数码管的显示代码:通过通过count变量的改变完成数码管片选扫描。变量的改变完成数码管片选扫描。sel_reg=0001;q_reg=q(3 DOWNTO 0)(第第4位数码的片选和显示数值的传递位数码的片选和显示数值的传递)sel_reg=0010;q_reg=q(7 DOWNTO 4);(第第3位数码的片选和显示数值的传递位数码的片选和显示数值的
47、传递)sel_reg=0100;q_reg=q(11 DOWNTO 8);7.3 相关技术基本知识与基本技能相关技术基本知识与基本技能下一页上一页下一页上一页7.3 相关技术基本知识与基本技能相关技术基本知识与基本技能 (第第2位数码的片选和显示数值的传递位数码的片选和显示数值的传递)sel_reg=”1000;q_reg=q(15 DOWNTO 12);(第第4位数码的片选和显示数值的传递位数码的片选和显示数值的传递)通过以上语句,将十六位的通过以上语句,将十六位的二二进计数值由高至低、四位一组传递到进计数值由高至低、四位一组传递到要显示的相对应的数码管。要显示的相对应的数码管。通过通过Sh
48、ow_reg=“0111111”WHEN“0000”,-数码管显示数码管显示0 “0000110”WHEN“0001”,-数码管显示数码管显示1 “1011011“WHEN”0010”,-数数码码管显示管显示2 “1001111”WHEN“0011”,-数码管显示数码管显示3 下一页上一页 “1100110”WHEN“0100”,-数数码码管显示管显示4 “1101101”WHEN“0101”,-数码管显数码管显示示5 “1111101”WHEN“0110”,-数码管显数码管显示示6 “0100111”WHEN“0111”,-数码管显数码管显示示7 “1111111”WHEN“1000”,-数
49、码管显数码管显示示8 “1101111”WHEN“1001”,-数码管显数码管显示示9 “0000000”WHEN others;-数数4已管不显已管不显示示 语句完成数码管数值显示的译码。语句完成数码管数值显示的译码。通过通过show=1&show_reg WHEN (sel_reg=0010 AND scale=010)OR 7.3 相关技术基本知识与基本技能相关技术基本知识与基本技能下一页上一页 (sel_reg=0100 AND scale=01l)OR (sel_reg=”1000 AND scale=”100)ELSE -超量程时,超量程时,4位数码管全灭位数码管全灭 “00000
50、000”WHEN scale=“001”ELSE o&show_reg;语句完成示数点该在哪位数码管显示。语句完成示数点该在哪位数码管显示。2.显示模块的仿真显示模块的仿真 显示模块的仿真参数的设定显示模块的仿真参数的设定:clklk周期为周期为1 ms,reset=0,仿真,仿真时间定为时间定为3 s;对对q的值设定的值设定(十六进制十六进制):01s期间为期间为0123,1 2 s期间为期间为4500,23 s期期间间为为6789。7.3 相关技术基本知识与基本技能相关技术基本知识与基本技能下一页上一页7.3 相关技术基本知识与基本技能相关技术基本知识与基本技能 对对scale的值设定的值
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。