《最新EDA数字频率计课程设计.doc》由会员分享,可在线阅读,更多相关《最新EDA数字频率计课程设计.doc(71页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-dateEDA数字频率计课程设计k湖南涉外经济学院课程设计报告课程名称:EDA技术及应用报告题目:数字频率计设计学生姓名:所在学院:信息科学与工程学院专业班级:学生学号:指导教师:2013年6月25日EDA技术及应用课程设计任务书报告题目数字频率计设计完成时间2013.6.17至2013.6.28学生姓名专业班级电信1001班指导教师职称 讲师总体设计要求和技术要点1.任务及
2、要求 1.任务及要求(1) 设计一个能测量方波信号的频率的频率计。(2) 测量的频率范围是0999999Hz。(3) 结果用十进制数显示。(4) 按湖南涉外经济学院课程设计管理办法要求提交课程设计报告。2.设计提示(1) 脉冲信号的频率就是在单位时间内所产生的脉冲个数,其表达式为f=N/T,f为被测信号的频率,N为计数器所累计的脉冲个数,T为产生N个脉冲所需的时间。所以,在1秒时间内计数器所记录的结果,就是被测信号的频率。(2) 被测频率信号取自实验箱晶体振荡器输出信号,加到主控门的输入端。(3) 再取晶体振荡器的另一标准频率信号,经分频后产生各种时基脉冲:1ms,10ms,0.1s,1s等,
3、时基信号的选择可以控制,即量程可以改变。(4) 时基信号经控制电路产生闸门信号至主控门,只有在闸门信号采样期间内(时基信号的一个周期),输入信号才通过主控门。(5) f=N/T,改变时基信号的周期T,即可得到不同的测频范围。(6) 当主控门关闭时,计数器停止计数,显示器显示记录结果,此时控制电路输出一个置零信号,将计数器和所有触发器复位,为新的一次采样做好准备。(7) 改变量程时,小数点能自动移位。工作内容及时间进度安排一、预设计阶段(第17周星期一): 包括教师授课、方案论证、设计计算和完成预设计(1天)。二、安装调试阶段(第17周星期一至第18周星期三): 包括检查程序、调试和检测,完成任
4、务(7天)。三、总结报告阶段(第18周星期四至第18周星期五): 包括总结设计工作,写出设计说明书和最后的考核(2天)。课程设计成果一、课程设计作品检查错误、调节程序。出现仿真的结果和仿真的图像。二、课程设计总结报告(1)严格遵守课程设计报告格式要求。做到内容完整正确、格式规范。(2)课程设计报告正文部分内容应包括:a.设计题目;b.主要指标和要求;c.系统工作原理;d.单元模块的程序设计与仿真;e.收获、体会和改进设计的建议。出勤与纪律1.课程设计时间:上午8:0011:30,下午2:005:302.学生应严格遵守纪律,不迟到、不早退、不无故缺课。3.学生在课程设计期间,注意自身与他人安全,
5、爱护实验室财产,违者按相关文件追查责任。4.课程设计报告独立完成,不得以任何形式抄袭他人资料或成果(包括但不限于同学的资料或网上资料)。一经发现该科目计0分。摘要(四号黑体)在电子工程,资源勘探,仪器仪表等相关应用中,频率计是工程技术人员必不可少的测量工具。频率测量也是电子测量技术中最基本最常见的测量之一。不少物理量的测量,如转速、振动频率等的测量都涉及到或可以转化为频率的测量。目前,市场上有各种多功能、高精度、高频率的数字频率计,但价格不菲。为适应实际工作的需要,本文在简述频率测量的基本原理和方法的基础上,提供一种基于FPGA的数字频率计的设计和实现过程,本方案不但切实可行,而且具有成本低廉
6、、小巧轻便、便于携带等特点。关键词:VGA;FPGA:VHDL;Ouartus II(小四、宋体、20磅行距)关键词(小四、黑体):脉宽;脉冲;数显;电容(小四、宋体)目录(四号、黑体)(小四、宋体)目录一、概述7二、系统设计71、系统的工作原理72、VGA显示原理73、按键模块控制VGA显示模式8三、程序设计91.程序流程图92、源程序及其说明103.试验现象12四、仿真结果13五、芯片图、总原理图及引脚图(四13六、结论与心得15七、参考文献16一、概述(四号、宋体、加粗)数字频率计是数字电路中的一个典型应用,实际的硬件设计用到的器件较多,连线比较复杂,而且会产生比较大的延时,造成测量误差
7、、可靠性差。随着复杂可编程逻辑器件(CPLD)的广泛应用,以EDA工具作为开发手段,运用VHDL语言。将使整个系统大大简化。提高整体的性能和可靠性。 本文用VHDL在CPLD器件上实现一种8 b数字频率计测频系统,能够用十进制数码显示被测信号的频率,能够测量方波。具有体积小、可靠性高、功耗低的特点。二、系统设计(四号、宋体、加粗)1、数字频率计的基本设计原理该程序通过元件例化实现,共分成五个部分程序,分别为分频程序、位选程序、时钟程序、计数程序、BCD转换程序(该模块为模式0自带)。通过五个模块相互配合实现简易数字频率计的功能。本次EDA课程设计题目为简易数字频率计设计,实现对于0999999
8、Hz的方波信号进行测量。该频率计包括4个不同的档位,记忆功能,并具有总体的复位功能。需要利用VHDL(硬件描述语言)通过Quartus II编程软件进行程序的编写和调试、仿真。并将程序下载到硬件上进行实际观测。2、系统原理转换图频率测量的基本原理是计算每秒钟内待测信号的脉冲个数。这就要求TESRCTL能产生一个1s脉宽的周期信号,并对频率计的每一个计数器CNT10的ENA使能端进行同步控制。当TETEN高电平时允许计数,并保持其所计的数。在停止计数期间,首先需要一个锁存信号LOAD的上跳沿将计数器在前1s的计数值锁存进锁存器REG中,并由外部的8段译码器译出并稳定显示。输出信号锁存器测频计数模
9、块测频控制信号发生模块被测频率信号闸门信号锁存信号时钟信号控制信号清零信号译 码 电 路(自带) 图1-2 测频法数字频率计框图三、程序设计本系统主要分为5个单元模块,它们分别是:十进制计数器模块、分频器模块、测频控制信号发生器模块、32位锁存器模块、7段译码器模块(自带)。各单元模块功能及相关电路的具体说明如下。1、计数器模块 CNT10为十进制计数器。有一时钟使能输入端ENA,用于锁定计数值。当高电平时允许计数,低电平时禁止计数。当ENA为高电平,有时钟脉冲时开始计数,计数十次进位。 波形仿真图如下图所示:图 3-1.1 计数器仿真图图 3-1.2 计数器外部端口2、分频器模块 此模块由四
10、个模块组成,有一个四选一模块和10分频,100分频和1000分频模块,在运行中一个四选一模块通过外部按键选择不同的频率,按键的不同组合对应不同的频率,“00”对应对应的是原频率,“01”对应的是10分频,“10”对应的是100分频,“11”对应的是1000分频。选择不同的频率来控制频率计的量程。仿真波形如下图所示: 图 3-2.1四选一仿真波形图 图3-2.2 四选一模块外部端口图 图 3-2.3 十分频仿真波形图 图3-2.4 十分频外部端口图 图 3-2.5 100分频波形图图3-2.6 1000分频波形图 3、测频控制信号发生器模块TESTCTL为锁存器。TESTCTL的计数使能信号TS
11、TEN能产生一个1 s宽的周期信号,并对频率计的每一计数器CNT10的ENA使能端进行同步控制:当TSTEN高电平时允许计数、低电平时停止计数。仿真波形如下图所示:图3-3锁存器的仿真波形图4、32位锁存器模块REG32B为锁存器。在信号Load的上升沿时,立即对模块的输入口的数据锁存到REG32B的内部,并由REG32B的输出端输出,然后,七段译码器可以译码输出。在这里使用了锁存器,好处是可以稳定显示数据,不会由于周期性的清零信号而不断闪烁。锁存器的外部端口图: 图 3-4锁存器的外部端口图5、7段译码器模块 该模块在试验箱上选择模式0时,会自动译码,并在数码管上显示。四、总原理图图4-1
12、总原理图七、结论与心得本次EDA课程设计题目为数字频率计设计,实现对于0999999Hz频率范围的方波频率进行测量,并在数码管上显示。该频率计包括四个档位,具有记忆功能,拥有一个整体的复位控制。此次课设需要用硬件描述语言(VHDL)编写程序,并在Quartus II软件平台上进行程序的编译和仿真,锁定引脚并下载到可编程逻辑器件(试验箱)中,进行硬件的测试。此次EDA课程设计历时两周时间,两人一组合作进行数字频率计系统的设计。程序的编写我们采用元件例化的形式,经过思考和相互间的分析讨论,将整个系统划分五个功能模块,彼此配合进行五个功能模块设计和程序的编写。其间,我们亦遇到许多问题,最后都和队友在
13、老师的建议下攻克下了。经历两周时间的不懈努力和队友之间愈加默契的配合,我们终于完成预定的目的,完成整个数字频率计的设计。虽然其中遇到很多困难,很多问题,但在我们两人相互支持和鼓励想下,都能够得以顺利的找到解决办法或者改进的方法,并在合作中相互提高,彼此进步,在困难在中体会到合作的乐趣。 EDA技术对于我们电子信息工程专业的学生来说是一本很重要的专业技术课程,EDA技术极大地提高了电路设计的效率和可操作性,减轻了设计者的劳动强度,是一门实际应用很广泛的技术,所以,EDA课程的学习对于我们自身素质和能力的提高有十分重要的积极作用,应该很认真的学习。七、参考文献VGA标准释义FPGA的VGA控制原理
14、(薛枫、乔磊)Verilog数字系统设计教程 夏宇闻编著 北京航空航天大学出版社2003年7月附录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
15、0 TO 15;BEGIN PROCESS(CLK,CLR,ENA) BEGIN IF CLR =1 THEN CQI=0; ELSIF CLKEVENT 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 ;
16、 -FREQTEST.VHDLIBRARY 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; FSIN:IN STD_LOGIC; DOUT:OUT STD_LOGIC_VECTOR(31 DOWNTO 0);END FREQTEST;ARCHITECTURE struc OF FREQTEST ISCOMPONENT TESTCTL PORT(CL
17、K: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_LOG
18、IC_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);BEGIN P1=11100110;P3CLK,TSTEN=TSTEN1, CLR_CNT=CLR_CNT1,LOAD=L
19、OAD1);U2:REG32B PORT MAP (load = load1,DIN = DTO1, DOUT = DOUT); U3:CNT10 PORT 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(
20、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 P
21、ORT 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);U10:CNT10 PORT MAP(CLK=CARRY_OUT1(6),CLR=CLR_CNT1, ENA=TSTEN1,CQ=DTO1(31 DOWNTO 28);END struc
22、;LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY max4_1 ISPORT(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 y0=a;y1=Z;y2=Z;y3 y1=b;y0=Z;y2=Z;y3
23、y2=c;y1=Z;y0=Z;y3 y3=d;y1=Z;y2=Z;y0 NULL; END CASE; END PROCESS; 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
24、REG32B IS BEGIN process (load,DIN) BEGIN IF loadEVENT 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; LOAD
25、 : OUT STD_LOGIC ); END TESTCTL ; ARCHITECTURE pin OF TESTCTL IS SIGNAL Div2CLK :STD_LOGIC; BEGIN PROCESS (CLK ) BEGIN IF CLKEVENT 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 PROCES
26、S ; 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);END ENTITY TYFP;ARCHITECTURE ART OF TYFP IS SIGNAL DATA:INTEGER RANGE 0 TO 1000; SIGNAL Q:STD_LOGIC; BEGINPROCESS(CLK_IN)IS BEGIN IF RISING_EDGE
27、(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.VHDLIBRARY 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 SIGNAL DATA
28、:INTEGER RANGE 0 TO 1000; SIGNAL Q:STD_LOGIC; BEGINPROCESS(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.VHDLIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL;
29、ENTITY TYFP100 IS PORT(CLK_IN:IN STD_LOGIC; CLK_OUT:OUT STD_LOGIC);END ENTITY TYFP100;ARCHITECTURE ART OF TYFP100 IS SIGNAL DATA:INTEGER RANGE 0 TO 1000; SIGNAL Q:STD_LOGIC; BEGINPROCESS(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;CL
30、K_OUT=Q;END PROCESS;END ARCHITECTURE ART;-TYFP1000.VHDLIBRARY 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 SIGNAL DATA:INTEGER RANGE 0 TO 1000; SIGNAL Q:STD_LOGIC; BEGINPROCESS(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; 教师评语及设计成绩教师评语:课程设计成绩:指导教师:(签名)日期: 年 月 日-