基于QUARTUS的EDA课程设计报告数字频率计的仿真.docx
《基于QUARTUS的EDA课程设计报告数字频率计的仿真.docx》由会员分享,可在线阅读,更多相关《基于QUARTUS的EDA课程设计报告数字频率计的仿真.docx(17页珍藏版)》请在冰豆网上搜索。
![基于QUARTUS的EDA课程设计报告数字频率计的仿真.docx](https://file1.bdocx.com/fileroot1/2023-8/15/5b11b3c9-98bb-419a-b387-86579aafb86c/5b11b3c9-98bb-419a-b387-86579aafb86c1.gif)
基于QUARTUS的EDA课程设计报告数字频率计的仿真
成绩评定表
学生
班级学号
专业
课程设计题目
评
语
组长签字:
成绩
日期
201年月日
课程设计任务书
学院
专业
学生
班级学号
课程设计题目
实践教学要求与任务:
一、容及要求:
利用所学的EDA设计方法设计数字频率计,熟练使用使用QUARTUS
应用软件,进一步学习使用VHDL语言、原理图等EDA设计方法进行综合题目的方法。
1调试底层模块,并时序仿真。
2.设计顶层模块,并时序仿真。
3.撰写课程设计报告,设计报告要求及格式见附件。
二、功能要求:
设计一个思维十进制的数字频率计。
要求具有以下功能;
(1)测量围:
1HZ~10HZ。
(2)测量误差≤1/
(3)响应时间≤15s。
(4)显示时间不小于1s。
(5)具有记忆显示的功能。
即在测量过程中不刷新数据。
等数据过程结束后才显示测量结果。
给出待测信号的频率值。
并保存到下一次测量结束。
包括时基产生与测评时序控制电路模块。
以及待测信号脉冲计数电路模块和锁存与译码显示控制电路。
工作计划与进度安排:
课程设计时间为10天(2周)
1、调研、查资料1天。
2、总体方案设计2天。
3、代码设计与调试5天。
4、撰写报告1天。
5、验收1天。
指导教师:
201年月日
专业负责人:
201年月日
学院教学副院长:
201年月日
数字频率计课程设计
1.设计要求
设计一个四位十进制的数字频率计。
要求具有以下功能:
(1)测量围:
1HZ~10HZ。
(2)测量误差≤1/
(3)响应时间≤15s。
(4)显示时间不小于1s。
(5)具有记忆显示的功能。
即在测量过程中不刷新数据。
等数据过
程结束后才显示测量结果。
给出待测信号的频率值。
并保存到
下一次测量结束。
(6)包括时基产生与测评时序控制电路模块。
以及待测信号脉冲计
数电路模块和锁存与译码显示控制电路。
2、设计目的
通过综合性课程设计题目的完成过程,运用所学EDA知识,解决生活中遇到的实际问题,达到活学活用,所学为所用的目的,进一步理解EDA的学习目的,提高实际应用水平。
本次设计的数字频率计具有精度高、使用方便、测量迅速、便于实现测量过程自动化等优点,是频率测量的重要手段之一。
数字频率计主要包括时基产生与测评时序控制电路模块、待测信号脉冲计数电路、译码显示与锁存控制电路模块。
3.总体设计思路及解决方案
3.1相关知识
QuartusII是Altera公司的综合性PLD开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(AlteraHardwareDescriptionLanguage)等多种设计输入形式,嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。
QuartusII可以在XP、Linux以及Unix上使用,除了可以使用Tcl脚本完成设计流程外,提供了完善的用户图形界面设计方式。
具有运行速度快,界面统一,功能集中,易学易用等特点。
QuartusII支持Altera的IP核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。
对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三放EDA工具。
此外,QuartusII通过和DSPBuilder工具与Matlab/Simulink相结合,可以方便地实现各种DSP应用系统;支持Altera的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。
MaxplusII作为Altera的上一代PLD设计软件,由于其出色的易用性而得到了广泛的应用。
目前Altera已经停止了对MaxplusII的更新支持,QuartusII与之相比不仅仅是支持器件类型的丰富和图形界面的改变。
Altera在QuartusII中包含了许多诸如SignalTapII、ChipEditor和RTLViewer的设计辅助工具,集成了SOPC和HardCopy设计流程,并且继承了MaxplusII友好的图形界面及简便的使用方法。
AlteraQuartusII作为一种可编程逻辑的设计环境,由于其强大的设计能力和直观易用的接口,越来越受到数字系统设计者的欢迎。
Altera的QuartusII可编程逻辑软件属于第四代PLD开发平台。
该平台支持一个工作组环境下的设计要求,其中包括支持基于Internet的协作设计。
Quartus平台与Cadence、ExemplarLogic、MentorGraphics、Synopsys和Synplicity等EDA供应商的开发工具相兼容。
改进了软件的LogicLock模块设计功能,增添了FastFit编译选项,推进了网络编辑性能,而且提升了调试能力。
3.2设计思路及原理图
数字频率计是一种用十进制数字显示被测信号频率的数字测量仪器.它的基本功能是测量方波信号及其他各种单位时间变化的物理量。
本数字频率计采用自顶向下的设计思想,通过闸门提供的1s闸门时间对被测信号进行计数及测出的被测信号的频率,测出的频率再通过译码器译码后输出给显示器显示。
根据系统设计的要求,数字频率计的电路原理框图如下:
图3.1数字频率计的电路原理框图
3.3、设计思路及解决方案
设计方案自顶向下设计,底层模块分时基产生与测评时序控制电路模块、待测信号脉冲计数电路模块、译码显示与锁存控制电路模块。
(1)时基产生与测评时序控制电路模块:
设计频率记得关键是设计一个测频率控制信号发生器(即时基产生与测评时序控制电路模块),产生测量频率控制时序。
控制时钟信号clk取为1Hz,二分频后即可产生一个脉宽为1s的时钟control-en,以此作为计数闸门信号。
当control-en为高电平时,允许计数;当control-en的下降沿时,应产生一个锁存信号,将计数值保存起来;锁存数据后,在下一个control-en上升沿到来之前对计数器清零,为下次计数做准备。
(2)待测信号脉冲计数电路模块
待测信号脉冲计数电路模块就是计数器,计数器以待测信号作为时钟,在清零信号clr到来时,异步清零;使能信号en为高电平时允许计数,为低电平时禁止计数。
(3)锁存与译码显示控制电路模块
锁存器在control-en下降沿到来时,将计数器的计数值锁存,这样就不会因为周期性的清零信号而不断闪烁了。
译码显示电路将计数器测得的BCD码数字转换为七段晶体管LED显示(0——9),显示出十进制的数字结果。
4.分层次方案设计及代码描述
4.1.底层程序源码
1、时基产生与测频时序控制电路模块的VHDL源程序
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitycontrolis
port(clk:
instd_logic;--定义输入
rst,ena:
outstd_logic);--定义输出
endcontrol;
architecturebehvofcontrolis
begin
process(clk)--clk为敏感信号
variablecqi:
std_logic_vector(2downto0);
begin
ifclk'eventandclk='1'then--时钟上升沿
ifcqi<1thencqi:
=cqi+1;ena<='1';rst<='0';
elsifcqi=1then
cqi:
=(others=>'0');
ena<='0';rst<='1';
endif;
endif;
endprocess;--进程结束
endbehv;
2、待测信号脉冲计数电路模块的VHDL源程序
(1)10进制计数器:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityt10is
port(rst,fx,ena:
instd_logic;--rst,fx,ena为输入端口
cout:
outstd_logic;
outy:
outstd_logic_vector(3downto0));
endt10;
architecturebehvoft10is
begin
process(rst,ena,fx)--rst,fx,ena为敏感信号
variablecqi:
std_logic_vector(3downto0);
begin
ifrst='1'thencqi:
=(others=>'0');--执行清零
elsiffx'eventandfx='1'then--fx上升沿
ifena='1'then--如果使能信号为1
ifcqi<9thencqi:
=cqi+1;cout<='0';
elsifcqi=9then
cqi:
=(others=>'0');
cout<='1';
endif;
elsifena='0'thencqi:
=(others=>'0');--使能信号为0
endif;
endif;
outy<=cqi;
endprocess;--进程结束
endbehv;
(2)4位10进计数器:
libraryieee;
useieee.std_logic_1164.all;
entityt10_4is
port(fx,rst,ena:
instd_logic;--定义输入
d:
outstd_logic_vector(15downto0));--定义输出
endentity;
architectureoneoft10_4is
ponentt10
port(rst,fx,ena:
instd_logic;
cout:
outstd_logic;
outy:
outstd_logic_vector(3downto0));
endponent;
signale:
std_logic_vector(3downto0);
begin--元件例化
u1:
t10portmap(fx=>fx,rst=>rst,ena=>ena,cout=>e(0),outy=>d(3downto0));
u2:
t10portmap(fx=>e(0),rst=>rst,ena=>ena,cout=>e
(1),outy=>d(7downto4));
u3:
t10portmap(fx=>e
(1),rst=>rst,ena=>ena,cout=>e
(2),outy=>d(11downto8));
u4:
t10portmap(fx=>e
(2),rst=>rst,ena=>ena,cout=>e(3),outy=>d(15downto12));
endarchitectureone;
(3)锁存器的VHDL源程序
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitylatch4is
port(d:
instd_logic_vector(15downto0);--d,ena,clk为锁存器输入
ena,clk:
instd_logic;
q:
outstd_logic_vector(15downto0));--q为锁存器输出
endlatch4;
architectureoneoflatch4is
begin
process(clk,ena,d)--ck,d,,ena为敏感信号
variablecqi:
std_logic_vector(15downto0);
begin
ifena='0'thencqi:
=cqi;
elsifclk'eventandclk='1'thencqi:
=d;
endif;
q<=cqi;
endprocess;--进程结束
endone;
(4)译码显示电路的VHDL源程序
libraryieee;
useieee.std_logic_1164.all;
entityled_controlleris
port(d:
instd_logic_vector(3downto0);
a:
outstd_logic_vector(6downto0));
endled_controller;
architectureartofled_controlleris
begin
process(d)
variables:
std_logic_vector(3downto0);
begin
s:
=d(3)&d
(2)&d
(1)&d(0);
casesis
when"0000"=>a<="1111110";
when"0001"=>a<="0110000";
when"0010"=>a<="1101101";
when"0011"=>a<="1111001";
when"0100"=>a<="0110011";
when"0101"=>a<="1011011";
when"0110"=>a<="0011111";
when"0111"=>a<="1110000";
when"1000"=>a<="1111111";
when"1001"=>a<="1110011";
when"1010"=>a<="0001101";
when"1011"=>a<="0011001";
when"1100"=>a<="0100011";
when"1101"=>a<="1001011";
when"1110"=>a<="0001111";
when"1111"=>a<="0000000";
endcase;
endprocess;
end;
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitylatch4is
port(d:
instd_logic_vector(15downto0);--d,ena,clk为锁存器输入
ena,clk:
instd_logic;
q:
outstd_logic_vector(15downto0));--q为锁存器输出
endlatch4;
architectureoneoflatch4is
begin
process(clk,ena,d)--ck,d,,ena为敏感信号
variablecqi:
std_logic_vector(15downto0);
begin
ifena='0'thencqi:
=cqi;
elsifclk'eventandclk='1'thencqi:
=d;
endif;
q<=cqi;
endprocess;--进程结束
endone;
4.2顶层程序源码
总体例化语句:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitytfis
port(rset,clk:
instd_logic;
fx:
instd_logic;
ledout:
outstd_logic_vector(27downto0));
endentity;
architectureoneoftfis
ponentcontrol--时基产生与测评时序控制部分
port(clk:
instd_logic;
rst,ena:
outstd_logic);
endponent;
ponentt10_4--4位十进制计数器部分
port(fx,rst,ena:
instd_logic;
d:
outstd_logic_vector(15downto0));
endponent;
ponentlatch4--锁存器部分
port(d:
instd_logic_vector(15downto0);
ena,clk:
instd_logic;
q:
outstd_logic_vector(15downto0));
endponent;
ponentled_controller--BCD码输入转LED显示部分
port(d:
instd_logic_vector(3downto0);
a:
outstd_logic_vector(6downto0));
endponent;
signalx,z:
std_logic;
signalg,h:
std_logic_vector(15downto0);
signalleds:
std_logic_vector(27downto0);
begin--元件例化
u1:
controlportmap(clk=>clk,ena=>x,rst=>z);
u2:
t10_4portmap(fx=>fx,rst=>z,ena=>x,d=>g);
u3:
latch4portmap(clk=>clk,ena=>x,d=>g,q=>h);
u4:
led_controllerportmap(d(3downto0)=>h(3downto0),a(6downto0)=>leds(6downto0));
u5:
led_controllerportmap(d(3downto0)=>h(7downto4),a(6downto0)=>leds(13downto7));
u6:
led_controllerportmap(d(3downto0)=>h(11downto8),a(6downto0)=>leds(20downto14));
u7:
led_controllerportmap(d(3downto0)=>h(15downto12),a(6downto0)=>leds(27downto21));
ledout<=leds;
end;--结束
5.各模块的时序仿真结果
图5.1时基产生与测频时序控制电路模块的仿真结果
图5.210进制计数器的仿真结果
图5.34位10进计数器的仿真结果
图5.4锁存器的仿真结果
图5.5译码显示电路的仿真结果
图5.6总体例化的仿真结果
6.设计心得
本课设给出了利用VHDL设计数字频率计的方法。
比较与用芯片搭电路进行硬件实现来说是一种新的尝试,通过仿真调试到下载试验,结果都能清楚明了地显示出来,相当的快捷和方便,不同模块之间相互独立,底层模块的修改不会影响其他模块的工作,采用这种设计方法设计结构清晰,层次清楚,便于对设计进行修改。
随着EDA技术的发展,CPLD/FAGA芯片的广泛应用,VHDL极显示了硬件描述语言的魅力。
数字电路系统的设计变得像软件设计一样灵活,复杂的电路可以通过VHDL编程器的电路合成方式,轻易而且快速的达到要求的规格。
通过此次课程设计,使我对课本上的基础知识了解的更加透彻了。
虽然,在设计中遇到过困难以及失败,但通过老师和同学们的帮助让我顺利通过了这次课程设计的验收。
即使时间短了些,却激发了我对EDA方面的兴趣及爱好。
我相信在不久的将来会有更大的进步。
7.参考文献
[1]马建国,孟宪元.电子设计自动化技术基础[M].:
清华大学,2004.
[2]王小平,立明.遗传算法[M].:
交通大学,2001.
[3]吴建新.基于量程自动转换的频率计设计[J].电子元器件应用,2007.
[4]曙光.可编程逻辑器件原理、开发与应用.:
电子科技大学,2000.