EDA数字频率计Word格式.docx
- 文档编号:19722109
- 上传时间:2023-01-09
- 格式:DOCX
- 页数:24
- 大小:412.58KB
EDA数字频率计Word格式.docx
《EDA数字频率计Word格式.docx》由会员分享,可在线阅读,更多相关《EDA数字频率计Word格式.docx(24页珍藏版)》请在冰豆网上搜索。
1HZ~10KHZ;
5)测量时间:
T〈=1.5S;
6)用CPLD/FPGA可编程逻辑器件实现;
1、EDA技术发展及介绍
1.1EDA技术的介绍
EDA技术是在电子CAD技术基础上发展起来的计算机软件系统,是指以计算机为工作平台,融合了应用电子技术、计算机技术、信息处理及智能化技术的最新成果,进行电子产品的自动设计。
利用EDA工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC版图或PCB版图的整个过程在计算机上自动处理完成。
现在对EDA的概念或范畴用得很宽。
包括在机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域,都有EDA的应用。
目前EDA技术已在各大公司、企事业单位和科研教学部门广泛使用。
例如在飞机制造过程中,从设计、性能测试及特性分析直到飞行模拟,都可能涉及到EDA技术。
本文所指的EDA技术,主要针对电子电路设计、PCB设计和IC设计。
EDA设计可分为系统级、电路级和物理实现级。
1.2EDA技术的发展
EDA技术是伴随着计算机、集成电路、电子系统的设计发展起来的,
至今已有30
多年的历程,大致可以分为三个发展阶段:
第一阶段为20世纪70年代的CAD(计算机辅助设计)阶段:
这一阶段的主要特征是利用计算机辅助进行电路原理图编辑、PCB布线,使得设计师从传统高度重复繁杂的绘图劳动中解脱出来。
第二阶段为20世纪80年代的CAED(计算机辅助工程设计)阶段:
这一阶段的主要特征是以逻辑摸拟、定时分析、故障仿真、自动布局布线为核心
重点解决电路设计的功能检测等问题,使设计能在产品制作之前预知产品的功能与性能。
第三阶段为20世纪90年代是EDA(电子设计自动化)阶段:
这一阶段的主要特征是以高级描述语言、系统仿真和综合技术为特点,采用自上而下的设计理念,将设计前期的许多高层次设计由EDA工具来完成。
1.3EDA技术的发展趋势
从目前的EDA技术来看,其发展趋势是政府重视、使用普及、应用文泛、工具多样、软件功能强大。
中国EDA市场已渐趋成熟,不过大部分设计工程师面向的是PC主板和小型ASIC领域,仅有小部分(约11%)的设计人员工发复杂的片上系统器件。
为了与台湾和美国的设计工程师形成更有力的竞争,中国的设计队伍有必要购入一些最新的EDA技术。
在信息通信领域,要优先发展高速宽带信息网、深亚微米集成电路、新型元器件、计算机及软件技术、第三代移动通信技术、信息管理、信息安全技术,积极开拓以数字技术、网络技术为基础的新一代信息产品,发展新兴产业,培育新的经济增长点。
要大力推进制造业信息化,积极开展计算机辅助设计(CAD)、计算机辅助工程(CAE)、计算机辅助工艺(CAPP)、计算机机辅助制造(CAM)、产品数据管理(PDM)、制造资源计划(MRPII)及企业资源管理(ERP)等。
有条件的企业可开展“网络制造”,便于合作设计、合作制造,参与国内和国际竞争。
开展“数控化”工程和“数字化”工程。
自动化仪表的技术发展趋势的测试技术、控制技术与计算机技术、通信技术进一步融合,形成测量、控制、通信与计算机(M3C)结构。
在ASIC和PLD设计方面,向超高速、高密度、低功耗、低电压方向发展。
外设技术与EDA工程相结合的市场前景看好,如组合超大屏幕的相关连接,多屏幕技术也有所发展。
中国自1995年以来加速开发半导体产业,先后建立了几所设计中心,推动系列设计活动以应对亚太地区其它EDA市场的竞争。
在EDA软件开发方面,目前主要集中在美国。
但各国也正在努力开发相应的工具。
日本、韩国都有ASIC设计工具,但不对外开放。
中国华大集成电路设计中心,也提供IC设计软件,但性能不是很强。
相信在不久的将来会有更多更好的设计工具有各地开花并结果。
据最新统计显示,中国和印度正在成为电子设计自动化领域发展最快的两个市场,年复合增长率分别达到了50%和30%。
EDA技术发展迅猛,完全可以用日新月异来描述。
EDA技术的应用广泛,现在已涉及到各行各业。
EDA水平不断提高,设计工具趋于完美的地步。
EDA市场日趋成熟,但我国的研发水平沿很有限,需迎头赶上。
2、总体方案设计
2.1设计内容
要求设计一个能在时钟脉冲CLK的激励下对输入信号FIN计数的数字频率计。
时钟脉冲能产生计数使能信号EN、计数清零信号CLR、锁存使能信号LOAD。
当EN为高电平时,启动计数;
低电平时停止计数,并保持记录的脉冲数。
在停止计数期间,用锁存信号的LOAD的上升沿,将计数器在前1秒钟的计数值锁存,并由外部的的7段译码器译码,显示计数结果,其原理框图如下:
图2-1.数字频率计原理框图
2.2设计方案比较
方案一:
用数字电路逻辑器件实现数字频率计。
被测量信号经过放大与整形电路传入十进制计数器,变成其所要求的信号,此时数字频率计与被测信号的频率相同,时基电路提供标准时间基准信号,此时利用所获得的基准信号来触发控制电路,进而得到一定宽度的闸门信号,当1s信号传入时,闸门开通,被测量的脉冲信号通过闸门,其计数器开始计数,当1s信号结束时闸门关闭,停止计数。
根据公式得被测信号的频率f=NHz。
图2-2.数字频率计系统原理方框图
方案二:
基于现场可编程逻辑门阵列FPGA,通过EDA技术。
频率测量的基本原理是计算每秒钟内待测信号的脉冲个数。
这就要求测频控制信号发生器testpl的计数使能信号tsten能产生一个1秒脉宽的周期信号,并对频率计的每一计数器cnt10的使能端en进行同步控制。
当tsten为高电平"
1"
时,允许计数;
为低电平"
0"
时停止计数,并保持其计数结果。
在停止计数期间,首先需要一个锁存信号load的上跳沿将计数器在前1秒种的计数值锁存进16位锁存器reg16b中。
锁存信号之后,必须有一个清零信号clr_cnt对计数器进行清零,为下1秒的计数操作做准备。
,然后由外部数码管控制器ledcom控制的7段译码器ymq译出,并稳定显示。
图2-3.数字频率计系统原理框图
2.3方案论证
方案一采用数字逻辑电路制作,用IC拼凑焊接实现。
其特点是直接用现成的IC组合而成,简单方便,但由于使用的器件较多,连线复杂,体积大,功耗大,焊点和线路较多将使成品稳定度与精确度大打折扣。
方案二采用可编程逻辑器件(CPLD)制作,利用EDA软件编程,下载烧制实现。
将所有器件集成在一块芯片上,体积大大减小的同时还提高了稳定性,并且可应用EDA软件仿真,调试,每个设计人员可以充分利用软件代码,提高开发效率,缩短研发周期,降低研发成本。
易于进行功能扩展,可以利用频率计的核心技术,改造成其它产品。
实现方法灵活,调试方便,修改容易。
2.4方案选择
现今人们对低故障、高实时、高可靠、高稳定的性能更加青睐,结合本设计的要求及综合以上比较的情况,我们选择了基于现场可编程逻辑门阵列FPGA,通过EDA技术方案。
3、单元模块设计
本设计由现场可编程门矩阵(FPGA)作为控制芯片,通过VreilogHDL硬件描述语言设计,运用自顶而下的设计思想,按功能逐层分割实现层次化的设计。
总体设计方案为由测频控制信号发生器testpl的计数使能信号tsten能产生一个1秒脉宽的周期信号,并对频率计的每一计数器cnt10的使能端en进行同步控制。
3.1频率产生器lpm_counter0
用一50MHz的时钟输入端clk,经过分频处理后从输出端q[26..0]输出27种频率信号,从中选出三个不同频率的信号:
q[25]为1Hz输入testpl的clk端,q[13]为测试信号输入低位计数器的cnt10的clk端,q[17]为数码管显示选择的扫描信号输入数码管控制器的clk端。
3.1.1程序源代码
libraryieee;
useieee.std_logic_1164.all;
librarylpm;
uselpm.lpm_components.all;
entitylpm_counter0is
port(clock:
instd_logic;
q:
outstd_logic_vector(26downto0));
endlpm_counter0;
architecturesynoflpm_counter0is
signalsub_wire0:
std_logic_vector(26downto0);
componentlpm_counter
generic(
lpm_direction:
string;
lpm_port_updown:
lpm_type:
lpm_width:
natural
);
port(clock:
q:
endcomponent;
begin
q<
=sub_wire0(26downto0);
lpm_counter_component:
lpm_counter
genericmap(
lpm_direction=>
"
up"
lpm_port_updown=>
port_unused"
lpm_type=>
lpm_counter"
lpm_width=>
27
)
portmap(
clock=>
clock,
q=>
sub_wire0
endsyn;
3.1.2时序仿真图
3.1.3模块化电路
3.2测频控制信号发生器testpl
输入端clk收到1Hz信号后,其输出端testen控制各个cnt10的使能,clr_cnt控制各个cnt10的清零,load控制锁存器内数据的输出。
3.2.1程序源代码
useieee.std_logic_unsigned.all;
entitytestplis
port(clk:
instd_logic;
--1Hz信号
tsten:
outstd_logic;
--计数器使能信号
clr_cnt:
--计数器清零信号
load:
outstd_logic);
--锁存器输出控制信号
endtestpl;
architectureartoftestplis
signaldiv2clk:
std_logic;
process(clk)
begin
ifclk'
eventandclk='
1'
then
div2clk<
=notdiv2clk;
--div2clk为2Hz
endif;
endprocess;
process(clk,div2clk)
if(clk='
0'
anddiv2clk='
)then
clr_cnt<
='
;
--当div2clk与clk同时为零时计数器清零
elseclr_cnt<
--当div2clk处于的高电平时计数器计数
endif;
load<
--锁存器输出与计数器使能信号反相
tsten<
=div2clk;
endart;
3.2.2时序仿真图
3.2.3模块化电路
3.3十进制计数器cnt10
有一时钟使能输入端en,用于锁定计数值。
当高电平"
时计数允许计数,低电平"
时禁止计数。
多位十进制计数器时,最低位的计数器的clk端输入被测信号,各计数器的进位输出端c10将信号输到下一位十进制计数器cnt10的输入端clk,最高位十进制计数器cnt10的进位输出端c10不处理。
3.3.1程序源代码
entitycnt10is
port(clk,clr,en:
instd_logic;
--clk:
计数器时钟,clr:
清零信号,en:
计数使能信号
outstd_logic_vector(3downto0);
--q:
4位计数结果输出
c10:
outstd_logic);
--计数进位
endcnt10;
architectureartofcnt10is
signalcqi:
std_logic_vector(3downto0);
process(clk,clr)
ifclr='
thencqi<
="
0000"
--当输入的clr_cnt为低电平0时清零
elsifclk'
then
ifen='
then
--当输入的tesen为高电平1时允许计数
if(cqi<
9)thencqi<
=cqi+1;
elsecqi<
--等于9则计数器清零
--当输入的tesen为低电平0时禁止计数,锁定计数值
endprocess;
--产生进位
process(cqi)
ifcqi="
1001"
thenc10<
--当加的9时产生进位输出
elsec10<
q<
=cqi;
3.3.2时序仿真图
3.3.3模块化电路
3.416位锁存器reg16b
将已有16位bcd码存在于此模块的输入口din[15..0],在信号load的上升沿后即被锁存到寄存器reg16b的内部,并由reg16b的输出端dout[15..0]输出,设置锁存器的好处是,数码管上显示的数据稳定,不会由于周期性的清零信号而不断闪烁。
3.4.1程序源代码
entityreg16bis
port(load:
--输出锁存控制信号
din:
instd_logic_vector(15downto0);
dout:
outstd_logic_vector(15downto0));
endreg16b;
architectureartofreg16bis
process(load,din)
ifload'
eventandload='
then
--load为高电平时teten为低电平,计数器禁止
dout<
=din;
--锁存输入的数据
3.4.2时序仿真图
3.4.3模块化电路
3.5数码管控制器ledcom
两个输入端一个为datain[15..0],另一个为数码管显示选择的扫描频率输入端clk,输出端为数码管选择信号com[3..0]和对应显示的数码管的BCD码信号端dataout[3..0],数码管显示选择随扫描频率clk循环变化,实现稳定显示。
3.5.1程序源代码
entityledcomis
port(clk:
--数码管扫描频率
datain:
--锁存器输入的16位信号
dataout:
-输出至译码器的4位信号
com:
outstd_logic_vector(3downto0));
--输出数码管选择信号
endledcom;
architectureartofledcomis
signalcomclk:
std_logic_vector(1downto0);
begin
--comclk同扫描频率clk循环变化
ifrising_edge(clk)then
ifcomclk>
=3then
comclk<
00"
elsecomclk<
=comclk+1;
--数码管选择
process(comclk)
casecomclkis
when"
=>
com<
1000"
01"
0100"
10"
0010"
11"
0001"
whenothers=>
NULL;
endcase;
--对应数码管的输出
process(comclk,datain)
=>
dataout<
=datain(3downto0);
=datain(7downto4);
=datain(11downto8);
=datain(15downto12);
3.5.2时序仿真图
3.5.2模块化电路
3.6七段数码管的译码器ymq
输入端d_in[3..0]将接收BCD码信号,译码后输出端d_out[7..0]输出8为7段数码管信号,其中输出的第8位均为高电平"
可以使四个数码管的小数点不显示。
经译码器的处理输出后数码管显示相应的数值。
3.6.1程序源代码
libraryIEEE;
useIEEE.std_logic_1164.all;
entityymqis
port(
d_in:
instd_logic_vector(3downto0);
--数码管控制器输入四位信号
d_out:
outstd_logic_vector(7downto0));
--输出8位信号
endymq;
--第8位d_out[7]为逗号
architectureartofymqis
process(d_in)
cased_inis--第8位为1高电平逗号不显示
d_out<
11000000"
--0
11111001"
--1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 数字频率计