基于CPLD的数字频率计.docx
- 文档编号:5658255
- 上传时间:2022-12-30
- 格式:DOCX
- 页数:21
- 大小:160.05KB
基于CPLD的数字频率计.docx
《基于CPLD的数字频率计.docx》由会员分享,可在线阅读,更多相关《基于CPLD的数字频率计.docx(21页珍藏版)》请在冰豆网上搜索。
基于CPLD的数字频率计
湖南工程学院
课程设计
课程名称嵌入式系统
课题名称基于CPLD的简易数字频率计
专业电子信息工程
班级
学号
姓名
指导教师
2011年12月日
湖南工程学院
课程设计任务书
课程名称:
嵌入式系统
题目:
基于CPLD的简易数字频率计
专业班级:
学生姓名:
指导老师:
审批:
任务书下达日期2011年12月日
设计完成日期2011年12月日
目录
任务书…………………………………………………………………………………………4
1设计目的和要求………………………………………………………………….4
2任务日期………………………………………………………………………….5
一、设计总体思路和基本框图…………………………………………………………………6
1设计总体思路…………………………………………………………………….6
2基本原理………………………………………………………………………….8
3总体框图………………………………………………………………………….8
二、各单元模块设计…………………………………………………………………………..16
1模块FEN…………………………………………………………………………...17
2模块SEL……………………………………………………………………………17
3模块CORNA………………………………………………………………………...19
4模块LOCK………………………………………………………………………...19
5模块CH…………………………………………………………………………...19
6模块DISP………………………………………………………………………...19
7模块YM…………………………………………………………………………...19
三、顶层文件设计……………………………………………………………………………..20
1总体电路图………………………………………………………………………...19
四、调试下载………………………………………………………………………….20
五、心得体会…………………………………………………………………………………..24
六、参考文献…………………………………………………………………………………...24
七、评分表……………………………………………………………………………………..26
设计内容与设计要求
CPLD为复杂可编程逻辑器件,通过EDA技术对其进行编程,可将一个较复杂的数字系统集成于一个芯片中,制成专用集成电路芯片,并可随时在系统修改其逻辑功能。
有关知识可参见相关教材或参考书。
一.设计内容
数字频率计是一种用数字显示的频率测量仪表,它不仅可以测量正弦信号、方波信号的频率,还可以测量如机械振动次数、物体转动次数、单位时间里经过传送带的产品数量等多种物理量。
技术指标:
(1)、频率测量范围:
1/10——9999Hz。
(2)、输入被测信号幅度Vi<100mV。
(3)、测量1s和10s时间内的脉冲数。
(4)、显示时间分“手动”和“自动”两档。
二、设计要求:
1、设计思路清晰,给出整体设计框图;
2、设计各单元电路,完成其功能仿真和编译并生成低层模块;
3、完成顶层设计并编译通过;
4、完成设计下载并调试电路;
5、写出设计报告。
主要设计条件
1.提供EDA实验室;
2.提供EL实验箱和CPLD芯片;
3.提供设计软件
说明书格式
1.课程设计封面;
2.任务书;
3.说明书目录;
4.设计总体思路,基本原理和框图(顶层电路图);
5.单元电路设计(各次级模块电路图);
6.设计仿真;
7.编程下载;
8.总结与体会;
9.附录;
10.参考文献。
进度安排
星期一、二:
下达设计任务书,介绍课题内容与要求;
介绍QUARTUSII7.2软件的使用;查找资料,确定总体设计方案和单元电路设计;
星期三~第二周星期一:
单元电路设计与仿真,硬件下载;
第二周星期二、三:
硬件下载;
第二星期四、五:
书写设计报告,打印相关图纸;答辩
参考文献
1.康华光主编.电子技术基础(数字部分),高等教育出版社。
2.阎石主编.电子技术基础(数字部分),清华大学出版社。
3.陈大钦主编,电子技术基础实验,高等教育出版社。
4.彭介华主编,电子技术课程设计指导,高等教育出版社。
5.张原编著,可编程逻辑器件设计及应用,机械工业出版社。
6.荀殿栋,徐志军编著,数字电路设计实用手册,电子工业出版社。
7.刘洪喜,陆颖编著.VHDL电路设计实用教程清华大学出版社
一.设计总体思路,基本原理和框图
1.设计总体思路
采用现场可编程门阵列(FPGA)为控制核心,利用VHDL语言编程,下载烧制实现。
将所有器件集成在一块芯片上,体积大大减小的同时还提高了稳定性,可实现大规模和超大规模的集成电路,测频测量精度高,测量频率范围大,而且编程灵活、调试方便.
2.基本原理
众所周知,频率信号易于传输,抗干扰性强,可以获得较好的测量精度。
因此,频率检测是电子测量领域最基本的测量之一。
频率计的基本原理是用一个频率稳定度高的频率源作为基准时钟,对比测量其他信号的频率。
通常情况下计算每秒内待测信号的脉冲个数,即闸门时间为1s。
闸门时间可以根据需要取值,大于或小于1s都可以。
闸门时间越长,得到的频率值就越准确,但闸门时间越长,则每测一次频率的间隔就越长。
闸门时间越短,测得的频率值刷新就越快,但测得的频率精度就受影响。
一般取1s作为闸门时间。
数字频率计的关键组成部分包括分频器,计数器、锁存器、片选电路,译码驱动电路和显示电路.
3.总体框图
二、各个单元模块设计
1、模块FEN
采用计数器构成分频电路,对1KHz的时钟脉冲进行分频,取得不同量程所需要的时间基准信号,实现量程控制。
模块FEN通过对4Hz时钟的分频得到0.5Hz时钟,为模块CORNA提供1s的闸门时间。
源程序:
libraryieee;
useieee.std_logic_1164.all;
entityfenis
port(clk:
instd_logic;
q:
outstd_logic);
endfen;
architecturefen_arcoffenis
begin
process(clk)
variablecnt:
integerrange0to2999999;
variablex:
std_logic;
begin
ifclk'eventandclk='1'
thenifcnt<2999999then
cnt:
=cnt+1;
else
cnt:
=0;
x:
=notx;
endif;
endif;
q<=x;
endprocess;
endfen_arc;
合成后如下图:
图3模块FEN
仿真波形如图:
2、模块SEL
模块SEL产生数码管的片选信号。
源程序:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityselis
port(clk:
instd_logic;
q:
outstd_logic_vector(2downto0));
endsel;
architecturesel_arcofselis
begin
process(clk)
variablecnt:
std_logic_vector(2downto0);
begin
ifclk'eventandclk='1'then
cnt:
=cnt+1;
endif;
q<=cnt;
endprocess;
endsel_arc;
合成后为:
图4模块SEL
仿真波形如图:
3、模块CORNA
模块CORNA是整个程序的核心,它完成在1S的时间里对被测信号计数的功能,并通过选择输出数据实现自动换档的功能。
源程序:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitycornais
port(clr,sig,door:
instd_logic;
alm:
outstd_logic;
q3,q2,q1,q0,dang:
outstd_logic_vector(3downto0));
endcorna;
architecturecorn_arcofcornais
begin
process(door,sig)
variablec3,c2,c1,c0:
std_logic_vector(3downto0);
variablex:
std_logic;
begin
ifsig'eventandsig='1'then
ifclr='0'then
alm<='0';
c3:
="0000";
c2:
="0000";
c1:
="0000";
c0:
="0000";
elsifdoor='1'then
c3:
="0000";
c2:
="0000";
c1:
="0000";
c0:
="0000";
elsifdoor='0'then
ifc0<"1001"then
c0:
=c0+1;
else
c0:
="0000";
ifc1<"1001"then
c1:
=c1+1;
elsec1:
="0000";
ifc2<"1001"then
c2:
=c2+1;
else
c2:
="0000";
ifc3<"1001"then
c3:
=c3+1;
else
c3:
="0000";
alm<='1';
endif;
endif;
endif;
endif;
endif;
ifc3/="0000"then
q3<=c3;
q2<=c2;
q1<=c1;
q0<=c0;
dang<="0100";
elsifc2/="0000"then
q3<="0000";
q2<=c2;
q1<=c1;
q0<=c0;
dang<="0011";
elsifc1/="0000"then
q3<="0000";
q2<="0000";
q1<=c1;
q0<=c0;
dang<="0010";
else
q3<="0000";
q2<="0000";
q1<="0000";
q0<=c0;
dang<="0001";
endif;
endif;
endprocess;
endcorn_arc;
合成后为:
图5模块CORNA
仿真波形图如下:
4、模块LOCK
模块LOCK实现锁存器的功能,在信号L的下降沿到来时将信号A4、A3、A2、A1锁存。
源程序:
libraryieee;
useieee.std_logic_1164.all;
entitylockis
port(l:
instd_logic;
a4,a3,a2,a1,a0:
instd_logic_vector(3downto0);
q4,q3,q2,q1,q0:
outstd_logic_vector(3downto0));
endlock;
architecturelock_arcoflockis
begin
process(l)
variablet4,t3,t2,t1,t0:
std_logic_vector(3downto0);
begin
ifl'eventandl='0'then
t4:
=a4;
t3:
=a3;
t2:
=a2;
t1:
=a1;
t0:
=a0;
endif;
q4<=t4;
q3<=t3;
q2<=t2;
q1<=t1;
q0<=t0;
endprocess;
endlock_arc;
合成后为:
图6模块LOCK
仿真波形图如下:
5、模块CH
模块CH对于于数码管片选信号,将相应的数据送出,其中档位也通过数码管显示。
源程序:
libraryieee;
useieee.std_logic_1164.all;
entitychis
port(sel:
instd_logic_vector(2downto0);
a3,a2,a1,a0,dang:
instd_logic_vector(3downto0);
q:
outstd_logic_vector(3downto0));
endch;
architecturech_arcofchis
begin
process(sel)
begin
caseselis
when"000"=>q<=a0;
when"001"=>q<=a1;
when"010"=>q<=a2;
when"011"=>q<=a3;
when"111"=>q<=dang;
whenothers=>q<="1111";
endcase;
endprocess;
endch_arc;
合成后为:
图7模块CH
仿真波形如图:
6、模块DISP
DISP为七段译码器。
源程序:
libraryieee;
useieee.std_logic_1164.all;
entitydispis
port(d:
instd_logic_vector(3downto0);
q:
outstd_logic_vector(6downto0));
enddisp;
architecturedisp_arcofdispis
begin
process(d)
begin
casedis
when"0000"=>q<="0111111";
when"0001"=>q<="0000110";
when"0010"=>q<="1011011";
when"0011"=>q<="1001111";
when"0100"=>q<="1100110";
when"0101"=>q<="1101101";
when"0110"=>q<="1111101";
when"0111"=>q<="0100101";
when"1000"=>q<="1111111";
when"1001"=>q<="1101111";
whenothers=>q<="0000000";
endcase;
endprocess;
enddisp_arc;
合成后为:
图8模块DISP
仿真波形如图:
7、模块YM
源程序:
libraryieee;
useieee.std_logic_1164.all;
entityymis
port(d:
instd_logic_vector(2downto0);
q:
outstd_logic_vector(7downto0));
endym;
architectureym_arcofymis
begin
process(d)
begin
casedis
when"000"=>q<="00000001";
when"001"=>q<="00000010";
when"010"=>q<="00000100";
when"011"=>q<="00001000";
when"100"=>q<="00010000";
when"101"=>q<="00100000";
when"110"=>q<="01000000";
when"111"=>q<="10000000";
whenothers=>q<="00000000";
endcase;
endprocess;
endym_arc;
合成后为:
图9模块YM
仿真波形图:
三、顶层文件设计
libraryieee;
useieee.std_logic_1164.all;
entitypljis
port(sig,clr,clk:
instd_logic;
alm:
outstd_logic;
q:
outstd_logic_vector(6downto0);
se:
outstd_logic_vector(7downto0));
endplj;
architectureartofpljis
componentcorna
port(clr,sig,door:
instd_logic;
alm:
outstd_logic;
q3,q2,q1,q0,dang:
outstd_logic_vector(3downto0));
endcomponent;
componentfen
port(clk:
instd_logic;
q:
outstd_logic);
endcomponent;
componentlock
port(l:
instd_logic;
a4,a3,a2,a1,a0:
instd_logic_vector(3downto0);
q4,q3,q2,q1,q0:
outstd_logic_vector(3downto0));
endcomponent;
componentsel
port(clk:
instd_logic;
q:
outstd_logic_vector(2downto0));
endcomponent;
componentch
port(sel:
instd_logic_vector(2downto0);
a3,a2,a1,a0,dang:
instd_logic_vector(3downto0);
q:
outstd_logic_vector(3downto0));
endcomponent;
componentdisp
port(d:
instd_logic_vector(3downto0);
q:
outstd_logic_vector(6downto0));
endcomponent;
componentym
port(d:
instd_logic_vector(2downto0);
q:
outstd_logic_vector(7downto0));
endcomponent;
signalt1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t12:
std_logic_vector(3downto0);
signalt11:
std_logic;
signalt20:
std_logic_vector(2downto0);
begin
u1:
cornaportmap(clr=>clr,sig=>sig,door=>t11,alm=>alm,q3=>t1,q2=>t2,q1=>t3,q0=>t4,dang=>t5);
u2:
fenportmap(clk=>clk,q=>t11);
u3:
lockportmap(l=>t11,a4=>t1,a3=>t2,a2=>t3,a1=>t4,a0=>t5,q4=>t6,q3=>t7,q2=>t8,q1=>t9,q0=>t10);
u4:
selportmap(clk=>clk,q=>t20);
u5:
chportmap(sel=>t20,a3=>t6,a2=>t7,a1=>t8,a0=>t9,dang=>t10,q=>t12);
u6:
dispportmap(d=>t12,q=>q);
u7:
ymportmap(d=>t20,q=>se);
endarchitectureart;
总体仿真波形图:
四、总体电路图
五.设计调试
1、软件调试与硬件调试
(a)软件调试
仿真时,打开软件puartusII,建立工程文件,然后输入程序。
保存后,编译,无误后及可以仿真了。
进入界面后,先点击edict菜单,设置endtime,一般设为10ms,由于软件的缘故,endtime不要设的太小,否则延时会很大.
对总电路图仿真的时候也出现了一个问题,一开始我们怎么也仿真不出来,后来才知道总图仿真的时候也要建立工程文件,而且要将所有的模块文件加载到总电路图的文件夹中。
(b)硬件调试
1、引脚锁定:
这个过程中特别要注意的是,在锁定引脚后必须再通过QuartusII的编译器“Compilation”,对文件重新进行编译一次,以便将引脚信息编入下载文件中。
2、连接线路:
选择主菜单“Assignments”中的“pinplanner”按钮,按照引脚锁定连接好线路,打开电源。
3、正式下载:
单击“Tools”中的“programmer”按钮,下载配置文件,如果连接无误,将出现一个以.cdf为后缀的窗口,然后点击“start”按钮。
六.总结与体会
课程设计是培养学生综合运用所学知识,发现、提出、分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。
随着科学技术发展的日新日异,EDA技术已经成为当今计算机应用中空前活跃的领域,在生活中可以说得是无处不在。
因此作为电子信息工程专业的学生来说掌握单片机的开发技术是十分重要的。
我的题目是基于CPLD的简易数字频率计,对于我们这些实践中的新手来说,这是一次考验。
怎样让自己的业余更接近专业?
怎样让自己的计划更具有序性,而不会忙无一用?
这都是我们所要考虑和努力的。
这次课程设计我学到很
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 CPLD 数字频率计