- 1、本文档共11页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
基于FPGA的脉冲信号发生器与数字频率计设计
摘要:简单介绍了基于FPGA的脉冲信号发生器的设计。通过对系统进行结构
分析,采用层次化的设计方法,给出了脉冲信号发生器与数字频率计的VHDL代
码,利用QuartusII对其进行了仿真,并在硬件电路上得以实现其逻辑功能。
关键词:FPGA;QuartusII;脉冲信号发生器
DesignofpulsegeneratorandcymometerbasedonFPGA
Gaoyuanli、Cenjianfeng、Wanghonggang(Departmentofelectronicand
informationengineering,NCIAE,langfang,hebei)
Abstract:Thispaperintroducesthedesignofthepulsegenerator
andcymometerbasedonFPGA.Byanalyzingthesystemstructuer,provides
theprogramofsignalgeneratorwithVHDLusingthehierarchicaldesign
methodandgivesthesimulationresultsofQuartusII.
Keywords:FPGA;QuartusII;pulsegenerator
引言:
信号发生器是一种常用的信号源,广泛应用于通信、雷达、测控、电子对抗
以及现代化仪器仪表等领域,是一种为电子测量工作提供符合严格技术要求的电信
号设备。它与示波器、万用表、频谱分析仪等仪器一样是最普通、最基本也是应用
最广泛的电子仪器之一,几乎所有电参量的测量都要用到信号发生器。
随着EDA技术的高速发展,电子系统设计技术和工具发生了深刻的变化,大
规模可编程逻辑器件FPGA的出现,给设计人员带来了诸多的方便。VHDL(即超高
速集成电路硬件描述语言)是随着可编程逻辑器件(PLD)发展起来的一种硬件描
述语言,主要用于描述数字系统的结构、行为、功能和接口,是电子设计自动化
(EDA)的关键技术之一。它采用一种自上而下的设计方法,即从系统总体要求出
发进行设计。本文介绍了以ALTERA公司的FPGA芯片EP2C5Q208C8N作为主芯片控
制核心,设计一个简单的脉冲信号发生器,其脉冲频率、相位、占空比等均可调,
并将频率值通过7段数码管进行输出。本课题采用VHDL语言设计脉冲信号发生器
以及数字频率计。
1、脉冲信号发生器系统组成
信号发生器系统组成如图1所示,由一分频模块与占空比调节模块共同组
成。
图1脉冲信号发生器系统组成
在时钟的整数分频中,时钟的二进制分频最简单。对于二进制分频,可以用
一个二进制加法计数器十分方便的完成
设计原理:将输入的时钟作为计数器的计数脉冲,计数结果的第N位是2的
N次幂分频。将对应的为数取出就能得到所需的频率。
二进制分频器的VHDL代码:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_arith.all;
useieee.std_logic_unsigned.all;
entityclk_div_vhdlis
generic(N:integer:=10);
port(clk:instd_logic;
clk_div:outstd_logic);
end;
architectureaofclk_div_vhdlis
signalcount:integerrangeN-1downto0;
begin
process(clk)begin
ifrising_edge(clk)then
if(count=N-1)then
count=0;
elsecount=count+1;
endif;
endif;
endprocess;
process(count)begin
ifcount(integer(N/2))then
clk_div=0;
elseclk_div=1;
endif;
文档评论(0)