EDA技术课程设计之六位频率计的设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录
一概述............................................................................................................................................. - 1 -
(一)设计背景及意义 (1)
(二)设计任务与要求 (1)
二六位频率计的工作原理............................................................................................................. - 1 -三六位频率计的设计与仿真......................................................................................................... - 2 -
(一)六位十进制频率计的设计与仿真 (2)
(二)六位十六进制频率计的设计与仿真 (5)
四调试过程、测试结果及分析 ..................................................................................................... - 8 -
(一)六位十进制频率计的测试结果与分析 (8)
(二)六位十进制频率计扩展功能的测试结果与分析 (9)
(三)六位十六进制频率计的测试结果与分析 (10)
五课程设计体会........................................................................................................................... - 11 -六参考文献................................................................................................................................... - 11 -
六位频率计的设计
一概述
(一)设计背景及意义
现代电子设计技术的核心已日益趋转向基于计算机的电子设计自动化技术,即EDA(Electronic Design Automation)技术。
为了加深对EDA技术的理解,培养EDA设计的能力和团队协作能力,于是按要求完成了本次课程设计。
(二)设计任务与要求
1、设计任务
采用原理图设计并制作六位十进制频率计,用VHDL语言方法设计并制作六位十六进制频率计。
2、设计要求
a)参考信号频率为1Hz;
b)测量频率范围:六位十进制频率计:1Hz~100kHz;
六位十六进制频率计:1Hz~4MHz;
c)结果能用数码显示器显示。
二六位频率计的工作原理
六位频率计由:测频控制电路、锁存器、计数器三大部分组成。
结构框图如图1所示。
图1:六位十进制频率计结构框图
六位频率计可对被测信号频率进行测量。
测频控制电路的计数使能信号能产生一个固定脉宽的周期信号,并对频率计中的计数器的使能端进行同步控制。
计数器高电平时开始计数,低电平时停止计数,并保持其所计的脉冲数。
在停止计数期间,首先需要一个锁存信号的上升延将计数器在前一秒钟的计数值锁存进锁存器中,并由外部的显示电路显示出来。
三六位频率计的设计与仿真
(一)六位十进制频率计的设计与仿真
1.测频控制电路原理图及仿真波形图
2.十进制计数器原理图及仿真波形图
3.六位十进制频率计原理图及仿真波形图
4.六位十进制频率计扩展功能说明 方案一:将测频控制电路修改为如图2所示电路即可实现频率直接读数,而不需换算的过程。
方案二:CNT_EN 的输入设置为:A B C D Q Q Q Q EN CNT ∙∙∙=_同样也可以实现频率直接读数,而不需换算的过程。
(二)六位十六进制频率计的设计与仿真
1.测频控制电路VHDL 描述及仿真波形图
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY PLJ IS
PORT( CLK : IN STD_LOGIC; CNT_EN : OUT STD_LOGIC; RST_CNT : OUT STD_LOGIC; LOAD : OUT STD_LOGIC); END PLJ;
ARCHITECTURE BEHAV OF PLJ IS
SIGNAL DIV2CLK : STD_LOGIC; BEGIN
PROCESS(CLK) BEGIN
IF CLK'EVENT AND CLK = '1' THEN
Div2clk <= NOT Div2clk; END IF; END PROCESS;
PROCESS(CLK, Div2clk) BEGIN
IF CLK = '0' AND Div2clk = '0' THEN RST_CNT <= '1';
图2:六位十进制频率计功能扩展部分原理图
ELSE RST_CNT <= '0';
END IF;
END PROCESS;
LOAD <= NOT Div2clk;
CNT_EN <= Div2clk;
END BEHAV;
2.二十四位锁存器VHDL描述及仿真波形图
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY SCQ IS
PORT(LK : IN STD_LOGIC;
DIN : IN STD_LOGIC_VECTOR(23 DOWNTO 0);
DOUT : OUT STD_LOGIC_VECTOR(23 DOWNTO 0));
END SCQ;
ARCHITECTURE BEHAV OF SCQ IS
BEGIN
PROCESS(LK,DIN)
BEGIN
IF LK'EVENT AND LK = '1' THEN DOUT <= DIN;
END IF;
END PROCESS;
END BEHAV;
3.二十四位计数器VHDL描述及仿真波形图
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY JSQ IS
PORT( FIN : IN STD_LOGIC;
CLR : IN STD_LOGIC;
ENABL : IN STD_LOGIC;
DOUT : OUT STD_LOGIC_VECTOR(23 DOWNTO 0));
END JSQ;
ARCHITECTURE BEHAV OF JSQ IS
SIGNAL CQI : STD_LOGIC_VECTOR (23 DOWNTO 0); BEGIN
PROCESS (FIN, CLR, ENABL)
BEGIN
IF CLR ='1' THEN CQI <= (OTHERS => '0');
ELSIF FIN'EVENT AND FIN = '1' THEN
IF ENABL = '1' THEN CQI <= CQI + 1;
END IF;
END IF;
END PROCESS;
DOUT <= CQI;
END BEHAV;
4.频率计顶层设计 VHDL描述及仿真波形图
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY DC IS
PORT ( CLK1HZ : IN STD_LOGIC;
FSIN : IN STD_LOGIC;
DOUT : OUT STD_LOGIC_VECTOR(23 DOWNTO 0)); END;
ARCHITECTURE STRUC OF DC IS
COMPONENT PLJ IS
PORT( CLK : IN STD_LOGIC;
CNT_EN : OUT STD_LOGIC;
RST_CNT : OUT STD_LOGIC;
LOAD : OUT STD_LOGIC);
END COMPONENT;
COMPONENT JSQ IS
PORT( FIN : IN STD_LOGIC;
CLR : IN STD_LOGIC;
ENABL : IN STD_LOGIC;
DOUT : OUT STD_LOGIC_VECTOR(23 DOWNTO 0));
END COMPONENT;
COMPONENT SCQ IS
PORT(LK : IN STD_LOGIC;
DIN : IN STD_LOGIC_VECTOR(23 DOWNTO 0);
DOUT : OUT STD_LOGIC_VECTOR(23 DOWNTO 0));
END COMPONENT;
SIGNAL TSTEN1 : STD_LOGIC;
SIGNAL CLR_CNT1 : STD_LOGIC;
SIGNAL LOAD1 : STD_LOGIC;
SIGNAL DTO1 : STD_LOGIC_VECTOR (23 DOWNTO 0);
SIGNAL CARRY_OUT1 : STD_LOGIC_VECTOR (6 DOWNTO 0);
BEGIN
U1: PLJ PORT MAP (CLK => CLK1HZ, CNT_EN =>TSTEN1, RST_CNT => CLR_CNT1, LOAD => LOAD1);
U2: SCQ PORT MAP ( LK => LOAD1, DIN => DTO1, DOUT => DOUT);
U3: JSQ PORT MAP ( FIN => FSIN, CLR => CLR_CNT1, ENABL => TSTEN1, DOUT => DTO1);
END STRUC;
四调试过程、测试结果及分析
(一)六位十进制频率计的调试过程、测试结果及分析
表1 六位十进制频率计的测试结果
调试过程:
调试过程分三步,首先是测频控制电路调试,然后就是计数器电路调试,最后就是综合电路调试。
测频控制电路调试:观察输出的波形,输出波形中clr和lock信号开始出现一段XX波形,原因就是单片机开始识别的是一个强未知的信号。
使能信号enb输出的是时钟信号clk的16分频信号,而清零信号clr和锁存信号输出的都是时钟信号clk的二分频信号。
计数器电路调试:观察输出波形,使能信号enb为高电平1时开始计数,时钟信号出现上升沿,输出信号q自加一,当计满9时,进位信号cout1产生1段高电
平,当清零信号clr 为高电平1时,输出q 清零,使能信号为低电平0时,输出q 停止计数。
综合电路调试:观察波形图,实验设置的被测信号clk1与对比信号clk 的比为10:1,输出a 从000000计数到000080,以此循环计数,锁存信号b 一直处于000080。
观察试验箱的结果如表一。
在这些调试过程中也会出现一些小问题,比如原理图连线出现短接、仿真频率参数设置、导线接触不良、license 参数、仿真时工程名和仿真文件名保持一致等等一系列问题,解决的办法也只有细心和耐心,一步一步的去排除。
分析:
测频控制电路能够产生设计要求的输出信号——计数器时钟使能信号enb 、计数器清零信号clr 和输出锁存信号lock 。
如何让这些信号参数达到要求就是电路图的功能。
首先是7493这个器件,可以相当于4个二分频电路,QA 是二分频、QB 是四分频、QC 是八分频、QD 是十六分频,所以QD 端产生的信号频率就是计数器使能信号的频率,这样满足设计要求。
锁存信号lock 就是当计数器计满一个周期时锁存计数结果,锁存信号频率也要和计数器周期频率保持一致。
而清零信号仅仅在计数初期出现一段清零,都满足设计要求。
计数器电路满足的就是计数功能,当时钟信号clk 出现上升沿,并且计数器使能信号enb 为高电平时,计数器自加1,当使能信号为低电平0时,停止计数,并且保持不变;当清零信号clr 为高电平1时,计数器清零。
当计数器计满9时,进位信号出现高电平1,满足设计要求。
综合电路要求就是能够对频率进行循环计数。
实验结果与真实值存在8倍的关系,这于实验中所选的器件有关系,在上面所讲的7493的作用,而计数器的使能信号就是时钟信号clk 的十六分频信号QD ,而能够计数的信号又是使能信号的一半,所以实验结果与真实值存在8倍的关系。
(二)六位十进制频率计扩展功能的调试过程、测试结果及分析
表2 六位十进制频率计的测试结果
调试过程:
调试过程就是把测频控制电路进行改进或者更换,改进就是将CNT_EN 的输入设置为:A B C D Q Q Q Q EN CNT ∙∙∙=_,更换就是换成如图2所示的电路。
其他调试过程都保持不变。
实验结果与实际值相同,原来的8倍关系被去掉了。
试验箱结果入上表。
分析:
把CNT_EN 的输入设置为:A B C D Q Q Q Q EN CNT ∙∙∙=_,这样就把时钟信号clk 与计数器使能信号enb 之间的频率比值定为1:0.5,然而实现计数的使能信号与时钟信号的频率比值为1:1,满足扩展要求。
(三)六位十六进制频率计的调试过程、测试结果及分析
表2 六位十六进制频率计的测试结果
调试过程:
基本步骤与原理图的步骤差不多,只是把原理图改成VHDL 程序语言。
调试过程分四个部分——测频控制调试、锁存器调试、计数器调试和综合调试。
测频控制调试就是观察输出波形与程序相不相符,波形显示时钟使能信号cnt_en 和输出锁存信号load 都是时钟信号的二分频信号清零信号rst-en 也按规律显示。
锁存器调试就是观察是否实现锁存功能,波形显示时钟信号lk 出现上升沿时,就把此状态下的计数器的值赋给输出dout 信号。
计数器调试过程与原理图中的计数器相似,唯一的区别就是当计数器计满F 时,进位信号才会出现高电平,其他的调试过程都一样。
综合调试过程也和原理图中的综合调试部分相同,只是结果显示的数据用十六进制来显示。
这些过程中也会出现一些问题,除了原理图方式中的那些问题,问题主要出现在编程中,语句不全、语句遗漏、单词拼写错误、分号遗漏、调用元件之前要做声明、元件例化语句中的端口连接前后循序等等。
这些问题不仅需要细心和耐心,还要认真查找书籍中的例子。
分析:
测频控制
五课程设计体会
六参考文献
潘松,赵敏笑. 2007. EDA技术及其应用. 北京:科学出版社
边计年,薛宏熙译. 2000. 用VHDL设计电子线路. 北京:清华大学出版社潘松,黄继业. 2006. EDA技术实用教程(第三版). 北京:科学出版社王锁萍. 2000. 电子设计自动化(EDA)教程. 成都:电子科技大学出版社徐志军,徐光辉. 2002. CPLD/FPGA的开发与应用. 北京:电子工业出版社。