您的当前位置:首页正文

EDA数字频率计课程设计资料

2022-05-26 来源:小奈知识网


湖南涉外经济学院

课程设计报告

课程名称:EDA技术及应用

报告题目:数字频率计设计 学生姓名:

所在学院:信息科学与工程学院 专业班级: 学生学号: 指导教师:

1

2013年6月25日

EDA技术及应用课程设计任务书

报告题目 数字频率计设计 专业电信指导教师 完成时间 2013.6.172013.6.28 至学生姓名 班级 1001班 职称 讲师 总体设计要求和技术要点 1.任务及要求 1.任务及要求 (1) 设计一个能测量方波信号的频率的频率计。 (2) 测量的频率范围是0999999Hz。 (3) 结果用十进制数显示。 (4) 按《湖南涉外经济学院课程设计管理办法》要求提交课程设计报告。 2.设计提示 (1) 脉冲信号的频率就是在单位时间内所产生的脉冲个数,其表达式为f=N/T,f为被测信号的频率,N为计数器所累计的脉冲个数,T为产生N个脉冲所需的时间。所以,在1秒时间内计数器所记录的结果,就是被测信号的频率。 (2) 被测频率信号取自实验箱晶体振荡器输出信号,加到主控门的输入端。 (3) 再取晶体振荡器的另一标准频率信号,经分频后产生各种时基脉冲:1ms,10ms,0.1s,1s等,时基信号的选择可以控制,即量程可以改变。 (4) 时基信号经控制电路产生闸门信号至主控门,只有在闸门信号采样期间内(时基信号的一个周期),输入信号才通过主控门。 (5) f=N/T,改变时基信号的周期T,即可得到不同的测频范围。 (6) 当主控门关闭时,计数器停止计数,显示器显示记录结果,此时控制电路输出一个置零信号,将计数器和所有触发器复位,为新的一次采样做好准备。 (7) 改变量程时,小数点能自动移位。 2

工作内容及时间进度安排 一、预设计阶段(第17周星期一): 包括教师授课、方案论证、设计计算和完成预设计(1天)。 二、安装调试阶段(第17周星期一至第18周星期三): 包括检查程序、调试和检测,完成任务(7天)。 三、总结报告阶段(第18周星期四至第18周星期五): 包括总结设计工作,写出设计说明书和最后的考核(2天)。 课程设计成果 一、课程设计作品 检查错误、调节程序。出现仿真的结果和仿真的图像。 二、课程设计总结报告 (1)严格遵守课程设计报告格式要求。做到内容完整正确、格式规范。 (2)课程设计报告正文部分内容应包括: a.设计题目; b.主要指标和要求; c.系统工作原理; d.单元模块的程序设计与仿真; e.收获、体会和改进设计的建议。 出勤与纪律 3

1.课程设计时间:上午8:00-11:30,下午2:00-5:30 2.学生应严格遵守纪律,不迟到、不早退、不无故缺课。 3.学生在课程设计期间,注意自身与他人安全,爱护实验室财产,违者按相关文件追查责任。 4.课程设计报告独立完成,不得以任何形式抄袭他人资料或成果(包括但不限于同学的资料或网上资料)。一经发现该科目计0分。

摘要(四号黑体)

在电子工程,资源勘探,仪器仪表等相关应用中,频率计是工程技术人员必不可少的测量工具。频率测量也是电子测量技术中最基本最常见的测量之一。不少物理量的测量,如转速、振动频率等的测量都涉及到或可以转化为频率的测量。目前,市场上有各种多功能、高精度、高频率的数字频率计,但价格不菲。为适应实际工作的需要,本文在简述频率测量的基本原理和方法的基础上,提供一种基于FPGA的数字频率计的设计和实现过程,本方案不但切实可行,而且具有成本低廉、小巧轻便、便于携带等特点。 关键词:VGA;FPGA:VHDL;Ouartus II

(小四、宋体、20磅行距)

关键词(小四、黑体):脉宽;脉冲;数显;电容(小四、宋体)

目录(四号、黑体)

(小四、宋体)

4

目录

一、概述........................................................................................................................................... 6 二、系统设计 ................................................................................................................................... 6

1、系统的工作原理 ................................................................................................................. 6 2、VGA显示原理 ................................................................................................................... 6 3、按键模块控制VGA显示模式 ........................................................ 错误!未定义书签。 三、程序设计 ................................................................................................................................... 8

1.程序流程图 .......................................................................................... 错误!未定义书签。 2、源程序及其说明 ............................................................................... 错误!未定义书签。 3.试验现象 .............................................................................................. 错误!未定义书签。 四、仿真结果 ................................................................................................. 错误!未定义书签。 五、芯片图、总原理图及引脚图(四 ......................................................... 错误!未定义书签。 六、结论与心得 ............................................................................................................................. 12 七、参考文献 ................................................................................................................................. 13

5

一、概述(四号、宋体、加粗)

数字频率计是数字电路中的一个典型应用,实际的硬件设计用到的器件较多,连线比较复杂,而且会产生比较大的延时,造成测量误差、可靠性差。随着复杂可编程逻辑器件(CPLD)的广泛应用,以EDA工具作为开发手段,运用VHDL语言。将使整个系统大大简化。提高整体的性能和可靠性。

本文用VHDL在CPLD器件上实现一种8 b数字频率计测频系统,能够用十进制数码显示被测信号的频率,能够测量方波。具有体积小、可靠性高、功耗低的特点。

二、系统设计(四号、宋体、加粗) 1、数字频率计的基本设计原理

该程序通过元件例化实现,共分成五个部分程序,分别为分频程序、位选程序、时钟程序、计数程序、BCD转换程序(该模块为模式0自带)。通过五个模块相互配合实现简易数字频率计的功能。

本次EDA课程设计题目为简易数字频率计设计,实现对于0999999Hz的方波信号进行测量。该频率计包括4个不同的档位,记忆功能,并具有总体的复位功能。需要利用VHDL(硬件描述语言)通过Quartus II编程软件进行程序的编写和调试、仿真。并将程序下载到硬件上进行实际观测。

6

2、系统原理转换图

频率测量的基本原理是计算每秒钟内待测信号的脉冲个数。这就要求TESRCTL能产生一个1s脉宽的周期信号,并对频率计的每一个计数器CNT10的ENA使能端进行同步控制。当TETEN高电平时允许计数,并保持其所计的数。在停止计数期间,首先需要一个锁存信号LOAD的上跳沿将计数器在前1s的计数值锁存进锁存器REG中,并由外部的8段译码器译出并稳定显示。

译 码 电 路(自带) 输出信号锁存器 锁存信号 闸门信号 被测频率信号 测频计数模块 控制信号 清零信号 测频控制信号发生模块 时钟信号

图1-2 测频法数字频率计框图

7

三、程序设计

本系统主要分为5个单元模块,它们分别是:十进制计数器模块、分频器模块、测频控制信号发生器模块、32位锁存器模块、7段译码器模块(自带)。各单元模块功能及相关电路的具体说明如下。

1、计数器模块

CNT10为十进制计数器。有一时钟使能输入端ENA,用于锁定计数值。当高电平时允许计数,低电平

时禁止计数。当ENA为高电平,有时钟脉冲时开始计数,计数十次进位。 波形仿真图如下图所示:

图 3-1.1 计数器仿真图

CNT10CLKCLRENAinstCQ[3..0]CARRY_OUT

图 3-1.2 计数器外部端口

8

2、分频器模块

此模块由四个模块组成,有一个四选一模块和10分频,100分频和1000

分频模块,在运行中一个四选一模块通过外部按键选择不同的频率,按键的不同组合对应不同的频率,“00”对应对应的是原频率,“01”对应的是10分频,“10”对应的是100分频,“11”对应的是1000分频。选择不同的频率来控制频率计的量程。仿真波形如下图所示:

图 3-2.1四选一仿真波形图

max4_abcds1s2y0y1y2y3

inst

图3-2.2 四选一模块外部端口图

9

图 3-2.3 十分频仿真波形图

TYFP1CLK_ICLK_OU 图3-2.4 十分频外部端口图

inst

图 3-2.5 100分频波形图

10

图3-2.6 1000分频波形图

3、测频控制信号发生器模块

TESTCTL为锁存器。TESTCTL的计数使能信号TSTEN能产生一个1 s宽的周期信号,并对频率计的每一计数器CNT10的ENA使能端进行同步控制:当TSTEN高电平时允许计数、低电平时停止计数。

仿真波形如下图所示:

图3-3锁存器的仿真波形图

4、32位锁存器模块

REG32B为锁存器。在信号Load的上升沿时,立即对模块的输入口的数据锁存到REG32B的内部,并由REG32B的输出端输出,然后,七段译码器可以译码输出。在这里使用了锁存器,好处是可以稳定显示数据,不会由于周期性的清零信号而不断闪烁。锁存器的外部端口图:

11

REG32BloadDIN[31..0]DOUT[31..0]inst 图 3-4锁存器的外部端口图

5、7段译码器模块

该模块在试验箱上选择模式0时,会自动译码,并在数码管上显示。

四、总原理图

图4-1 总原理图

七、结论与心得

本次EDA课程设计题目为数字频率计设计,实现对于0~999999Hz频率范围的方波频率进行测量,并在数码管上显示。该频率计包括四个档位,具有记忆功能,拥有一个整体的复位控制。此次课设需要用硬件描述语言(VHDL)编写程序,并在Quartus II软件平台上进行程序的编译和仿真,锁定引脚并下载到可编程逻辑器件(试验箱)中,进行硬件的测试。

12

此次EDA课程设计历时两周时间,两人一组合作进行数字频率计系统的设计。程序的编写我们采用元件例化的形式,经过思考和相互间的分析讨论,将整个系统划分五个功能模块,彼此配合进行五个功能模块设计和程序的编写。其间,我们亦遇到许多问题,最后都和队友在老师的建议下攻克下了。

经历两周时间的不懈努力和队友之间愈加默契的配合,我们终于完成预定的目的,完成整个数字频率计的设计。虽然其中遇到很多困难,很多问题,但在我们两人相互支持和鼓励想下,都能够得以顺利的找到解决办法或者改进的方法,并在合作中相互提高,彼此进步,在困难在中体会到合作的乐趣。

EDA技术对于我们电子信息工程专业的学生来说是一本很重要的专业技术课程,EDA技术极大地提高了电路设计的效率和可操作性,减轻了设计者的劳动强度,是一门实际应用很广泛的技术,所以,EDA课程的学习对于我们自身素质和能力的提高有十分重要的积极作用,应该很认真的学习。

七、参考文献

VGA标准释义

FPGA的VGA控制原理(薛枫、乔磊)

Verilog数字系统设计教程 夏宇闻编著 北京航空航天大学出版社 2003年7月

13

附录I -- cnt10.VHD 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; CARRY_OUT:OUT STD_LOGIC); END CNT10;

ARCHITECTURE pin OF CNT10 IS SIGNAL CQI:INTEGER RANGE 0 TO 15; BEGIN

PROCESS(CLK,CLR,ENA)

14

BEGIN

IF CLR ='1' THEN CQI<=0;

ELSIF CLK'EVENT AND CLK ='1' THEN IF ENA ='1' THEN

IF CQI < 9 THEN CQI <= CQI + 1; ELSE CQI <=0 ; END IF ; END IF ; END IF ; END PROCESS; PROCESS (CQI) BEGIN

IF CQI =9 THEN CARRY_OUT <='1'; ELSE

CARRY_OUT <='0'; END IF ; END PROCESS ; CQ <=CQI;

END pin ;

--FREQTEST.VHD LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; ENTITY FREQTEST IS

PORT(P1:OUT STD_LOGIC_VECTOR(7 DOWNTO 0); P3:OUT STD_LOGIC_VECTOR(6 DOWNTO 2); CLK:IN STD_LOGIC;

15

FSIN:IN STD_LOGIC;

DOUT:OUT STD_LOGIC_VECTOR(31 DOWNTO 0)); END FREQTEST;

ARCHITECTURE struc OF FREQTEST IS COMPONENT TESTCTL PORT(CLK:IN STD_LOGIC; TSTEN:OUT STD_LOGIC; CLR_CNT:OUT STD_LOGIC; LOAD:OUT STD_LOGIC); END COMPONENT; COMPONENT CNT10

PORT(CLK:IN STD_LOGIC; CLR:IN STD_LOGIC; ENA:IN STD_LOGIC;

CQ:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); CARRY_OUT:OUT STD_LOGIC); END COMPONENT; COMPONENT REG32B

PORT(LOAD:IN STD_LOGIC;

DIN:IN STD_LOGIC_VECTOR(3 DOWNTO 0); DOUT:OUT STD_LOGIC_VECTOR (31 DOWNTO 0)); END COMPONENT;

SIGNAL TSTEN1:STD_LOGIC; SIGNAL CLR_CNT1:STD_LOGIC; SIGNAL LOAD1:STD_LOGIC;

SIGNAL DTO1:STD_LOGIC_VECTOR(31 DOWNTO 0); SIGNAL CARRY_OUT1:STD_LOGIC_VECTOR(6 DOWNTO 0);

16

BEGIN P1<=\"11100110\"; P3<=\"11111\";

U1:TESTCTL PORT MAP(CLK=>CLK,TSTEN=>TSTEN1, CLR_CNT=>CLR_CNT1,LOAD=>LOAD1);

U2:REG32B PORT MAP (load => load1,DIN => DTO1, DOUT => DOUT); U3:CNT10

MAP(CLK=>FSIN,CLR=>CLR_CNT1,ENA=>TSTEN1,

CQ=>DTO1(3 DOWNTO 0),CARRY_OUT=>CARRY_OUT1(0)); U4:CNT10 PORT MAP(CLK=>CARRY_OUT1(0),CLR=>CLR_CNT1, ENA=>TSTEN1,CQ=>DTO1(7 DOWNTO 4), CARRY_OUT=>CARRY_OUT1(1));

U5:CNT10 PORT MAP(CLK=>CARRY_OUT1(1),CLR=>CLR_CNT1, ENA=>TSTEN1,CQ=>DTO1(11 DOWNTO 8), CARRY_OUT=>CARRY_OUT1(2));

U6:CNT10 PORT MAP(CLK=>CARRY_OUT1(2),CLR=>CLR_CNT1, ENA=>TSTEN1,CQ=>DTO1(15 DOWNTO 12), CARRY_OUT=>CARRY_OUT1(3));

U7:CNT10 PORT MAP(CLK=>CARRY_OUT1(3),CLR=>CLR_CNT1, ENA=>TSTEN1,CQ=>DTO1(19 DOWNTO 16), CARRY_OUT=>CARRY_OUT1(4));

U8:CNT10 PORT MAP(CLK=>CARRY_OUT1(4),CLR=>CLR_CNT1, ENA=>TSTEN1,CQ=>DTO1(23 DOWNTO 20), CARRY_OUT=>CARRY_OUT1(5));

U9:CNT10 PORT MAP(CLK=>CARRY_OUT1(5),CLR=>CLR_CNT1, ENA=>TSTEN1,CQ=>DTO1(27 DOWNTO 24), CARRY_OUT=>CARRY_OUT1(6));

17

PORT

U10:CNT10 PORT MAP(CLK=>CARRY_OUT1(6),CLR=>CLR_CNT1, ENA=>TSTEN1,CQ=>DTO1(31 DOWNTO 28)); END struc ;

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; ENTITY max4_1 IS

PORT(a,b,c,d,s1,s2 : IN STD_LOGIC;

y0: OUT STD_LOGIC; y1: OUT STD_LOGIC; y2: OUT STD_LOGIC; y3: OUT STD_LOGIC); END ENTITY max4_1;

ARCHITECTURE hf1 OF max4_1 IS

SIGNAL ss : STD_LOGIC_VECTOR (0 TO 1); BEGIN ss<=s2&s1; PROCESS(ss) BEGIN CASE ss IS

WHEN \"00\" => y0<=a;y1<='Z';y2<='Z';y3<='Z'; WHEN \"01\" => y1<=b;y0<='Z';y2<='Z';y3<='Z'; WHEN \"10\" => y2<=c;y1<='Z';y0<='Z';y3<='Z'; WHEN \"11\" => y3<=d;y1<='Z';y2<='Z';y0<='Z'; WHEN OTHERS => NULL; END CASE; END PROCESS;

18

END ARCHITECTURE hf1;

--REG32B.VHD LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.all; ENTITY REG32B IS

PORT (load : IN STD_LOGIC;

DIN :IN STD_LOGIC_VECTOR (31 DOWNTO 0); DOUT : OUT STD_LOGIC_VECTOR (31 DOWNTO 0)); END REG32B;

ARCHITECTURE pin OF REG32B IS BEGIN process (load,DIN) BEGIN

IF load'EVENT AND load = '1' THEN DOUT <= DIN ; END IF ; END PROCESS ; END pin ; --TESTCTL.vhd LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY TESTCTL IS

PORT (CLK :IN STD_LOGIC ; TSTEN: OUT STD_LOGIC ; CLR_CNT:OUT STD_LOGIC;

19

LOAD : OUT STD_LOGIC ); END TESTCTL ;

ARCHITECTURE pin OF TESTCTL 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 CLR_CNT <='1' ; ELSE

CLR_CNT <='0' ; END IF ; END PROCESS ;

load <= NOT Div2CLK; TSTEN <= Div2CLK; END pin;

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; ENTITY TYFP IS

PORT(CLK_IN:IN STD_LOGIC; CLK_OUT:OUT STD_LOGIC);

20

END ENTITY TYFP;

ARCHITECTURE ART OF TYFP IS

SIGNAL DATA:INTEGER RANGE 0 TO 1000; SIGNAL Q:STD_LOGIC; BEGIN

PROCESS(CLK_IN)IS BEGIN

IF RISING_EDGE(CLK_IN) THEN IF(DATA=0) THEN DATA<=0; Q<=NOT Q; ELSE

DATA<=DATA; END IF; END IF; CLK_OUT<=Q; END PROCESS;

END ARCHITECTURE ART;

--TYFP10.VHD LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; ENTITY TYFP10 IS

PORT(CLK_IN:IN STD_LOGIC; CLK_OUT:OUT STD_LOGIC); END ENTITY TYFP10;

ARCHITECTURE ART OF TYFP10 IS

21

SIGNAL DATA:INTEGER RANGE 0 TO 1000; SIGNAL Q:STD_LOGIC; BEGIN

PROCESS(CLK_IN)IS BEGIN

IF RISING_EDGE(CLK_IN) THEN IF(DATA=4) THEN DATA<=0; Q<=NOT Q; ELSE

DATA<=DATA+1; END IF; END IF; CLK_OUT<=Q; END PROCESS;

END ARCHITECTURE ART;

--TYFP100.VHD LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY TYFP100 IS

PORT(CLK_IN:IN STD_LOGIC; CLK_OUT:OUT STD_LOGIC); END ENTITY TYFP100;

ARCHITECTURE ART OF TYFP100 IS

22

SIGNAL DATA:INTEGER RANGE 0 TO 1000; SIGNAL Q:STD_LOGIC; BEGIN

PROCESS(CLK_IN)IS BEGIN

IF RISING_EDGE(CLK_IN) THEN IF(DATA=49) THEN DATA<=0; Q<=NOT Q; ELSE

DATA<=DATA+1; END IF; END IF; CLK_OUT<=Q; END PROCESS;

END ARCHITECTURE ART;

--TYFP1000.VHD LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY TYFP1000 IS

PORT(CLK_IN:IN STD_LOGIC; CLK_OUT:OUT STD_LOGIC); END ENTITY TYFP1000;

ARCHITECTURE ART OF TYFP1000 IS

23

SIGNAL DATA:INTEGER RANGE 0 TO 1000; SIGNAL Q:STD_LOGIC; BEGIN

PROCESS(CLK_IN)IS BEGIN

IF RISING_EDGE(CLK_IN) THEN IF(DATA=499) THEN DATA<=0; Q<=NOT Q; ELSE

DATA<=DATA+1; END IF; END IF; CLK_OUT<=Q; END PROCESS;

END ARCHITECTURE ART;

24

25

教师评语: 教师评语及设计成绩 课程设计成绩: 指导教师:(签名) 日期: 年 月 日 26

因篇幅问题不能全部显示,请点此查看更多更全内容