下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于 FPGA的计数器的程序设计方案1.1FPGA简介FPGA(Field Progrmable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。自1985 年Xilinx 公司推出第一片中大规模现场可编程逻辑器件 (FP2GA) 至今,FPGA 已经历了十几年的历。在这十几年的过程中 , 可编程器件有了惊人的发展 : 从最初的 1200 个可利用门 , 到今天的 25 万可利用门 , 规模增大了 20
2、0 多倍 ; FPGA 供应商也从 Xilinx 的一枝独秀 , 到今天近 20 个厂商的分庭抗争 ;FPGA 从单一的基于SRAM结构到今天各种结构类型的出现 , 都充分体现了可编程器件这一巨大市场的吸引力。FPGA不仅可以解决电子系统小型化、低功耗、高可靠性等问题, 而且其开发周期短、开发软件投入少、芯片价格不断降低。由于目前电子产品生命周期相对缩短, 相近功能产品的派生设计增多等特点 , 促使 FPGA越来越多地取代了 ASIC 的市场 , 特别是对国内众多的科研单位来说, 小批量、多品种的产品需求, 使得 FPGA成为首选。1.2硬件描述语言VHDL特点功能强大、设计灵活。VHDL具有
3、功能强大的语言结构,可以用简洁明确的源代码来描述复杂的逻辑控制。它具有多层次的设计描述功能,层层细化,最后可直接生成电路级描述。 VHDL支持同步电路、异步电路和随机电路的设计,这是其他硬件描述语言所不能比拟的。VHDL还支持各种设计方法,既支持自底向上的设计,又支持自顶向下的设计;既支持模块化设计,又支持层次化设计。支持广泛、易于修改。由于 VHDL已经成为 IEEE 标准所规范的硬件描述语言,目前大多数EDA工具几乎都支持 VHDL,这为 VHDL 的进一步推广和广泛应用奠定了基础。在硬件电路设计过程中,主要的设计文件是用VHDL编写的源代码,因为VHDL易读和结构化,所以易于修改设计。强
4、大的系统硬件描述能力。VHDL具有多层次的设计描述功能,既可以描述系统级电路,又可以描述门级电路。而描述既可以采用行为描述、寄存器传输描述或结构描述,也可以采用三者混合的混合级描述。另外,VHDL支持惯性延迟和传输延迟,还可以准确地建立硬件电路模型。VHDL支持预定义的和自定义的数据类型,给硬件描述带来较大的自由度,使设计人员能够方便地创建高层次的系统模型。独立于器件的设计、与工艺无关。设计人员用VHDL进行设计时,不需要首先考虑选择完成设计的器件,就可以集中精力进行设计的优化。当设计描述完成后,可以用多种不同的器件结构来实现其功能。很强的移植能力。VHDL是一种标准化的硬件描述语言,同一个设
5、计描述可以被不同的工具所支持,使得设计描述的移植成为可能。1.3软件开发工具Quartus II简介Altera 的Quartus II设计软件提供了完整的多平台设计环境,它可以轻易满足各种特定设计的需要,也是单芯片可编程系统(SOPC) 设计的综合性环境和 SOPC开发的基本设计工具,并为Altera DSP 开发包进行系统模型设计提供了集成综合环境。Quartus II设计工具完全支持 VHDL、 Verilog 的设计流程,其内部嵌有VHDL、Verilog 逻辑综合器。Quartus II包括模块化的编译器。编译器包括的功能模块有分析/ 综合器( Analysis Synthesis
6、)、适配器( Fitter )、装配器 (Assembler) 、时序分析器(Timing Analyzer)、设计辅助模块 (Design Assistant)等。可以通过选择StartCompilation(Processing菜单)来运行所有的编译器模块。若要单独运行各个模块,可以通过选择Start(Processing菜单),然后从Start子菜单中为模块选择相应的指令。此外,还可以通过选择Compiler Tool(Tools菜单)并在Compiler Tool 窗口中运行该模块来启动编译器模块。在Compiler Tool窗口中,可以打开该模块的设置文件或报告文件,还可以打开其它相
7、关窗口。Quartus II支持层次化的设计,可以在一个新的编辑输入环境中对使用不同输入设计方式完成的模块进行调试,从而解决原理图与 HDL混合输入设计的问题。在设计输入之后, Quartus II 的编译器将给出设计输入的错误报告。可以使用 Quartus II 带有的 RTL Viewer 观察综合后的 RTL图。 Quartus II 自动设计的各主要处理环节和设计流程,包括设计输入编辑、设计分析与综合、适配、编译文件汇编(装配)、时序参数提取以及编程下载几个步骤。2 整体设计方案设计基于 FPGA的计数器,要求显示1 个 0-9999 的四位计数器,可以由4 个模为 10 的十进制计数
8、器级联而成,所以可以显示的频率范围是 1-9999HZ。因此,频率计的功能分割成四个模块:分频计,计数器,输出锁存器和译码显示电路。各个模块均用 VHDL语言描述并用 quartus2 进行仿真。本设计采用数控分频计,可以对信号实现不同分频比,输出信号作为计数器输入。锁存器由一个外部脉冲控制可以控制显示部分显示周期。当系统正常工作时,输入信号标提供频率,经过分频器分频,产生计数信号送入计数器模块,计数模块对输入的脉冲个数进行计数数结束后,将计数结果送入锁存器中,保证系统可以稳定显示数据,计数结果能够显示在七段数码显示管上。分频计计锁显示电clk11数存路ena0器器rest0clk2图 1设计
9、方案3 各个模块的设计和功能的具体分析3.1分频器设计3.1.1设计原理分频器是指使输出信号频率为输入信号频率整数分之一的电子电路。在许多电子设备中如电子钟、频率合成器等,需要各种不同频率的信号协同工作,常用的方法是以稳定度高的晶体振荡器为主振源,通过变换得到所需要的各种频率成分,分频器是一种主要变换手段。早期的分频器多为正弦分频器,随着数字集成电路的发展,脉冲分频器(又称数字分频器)逐渐取代了正弦分频器,即使在输入输出信号均为正弦波时也往往采用模数转换数字分频数模转换的方法来实现分频。正弦分频器除在输入信噪比低和频率极高的场合已很少使用。数控分频器的功能是在输入端给定不同数据时,将对输入的时
10、钟信号有不同的分频比,对于一个 N分频器,分频出的时钟周期是原时钟周期的 N倍,频率变为原来的 1/N。对于一个 8 位计数器,如果输入数 DD,然后启动计数器工作,则经过 D 倍的时钟周期计数器溢出时,输出 full 变为高电平,再以 full 为敏感信号,对 fout 进行取反操作,如此 N=2D。计数一次后,再重新计数,反复进行直至输入被赋予新值。对于数控分频数器,装载不同的计数初始值时,会有不同频率的溢出信号,从而得到不同的输出。数控分频器是利用计数值可并行预置的加法计数器设计完成的。3.1.2源程序及其仿真波形LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.
11、ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY DVF ISPORT (CLK : IN STD_LOGIC;DD : IN STD_LOGIC_VECTOR(7 DOWNTO 0); FOUT : OUT STD_LOGIC );END;ARCHITECTURE one OF DVF ISSIGNALFULL : STD_LOGIC;BEGINP_REG: PROCESS(CLK)VARIABLE CNT8 : STD_LOGIC_VECTOR(7 DOWNTO 0);BEGINIF CLKEVENT AND CLK = 1 THENIF CNT8 =
12、11111111 THENCNT8 := DD; - 当 CNT8计数计满时,输入数据 D被同步预置给计数器 CNT8 FULL = 1; - 同时使溢出标志信号 FULL输出为高电平 ELSE CNT8 := CNT8 + 1; - 否则继续作加 1 计数FULL = 0; -且输出溢出标志信号FULL为低电平END IF;END IF;END PROCESS P_REG ;P_DIV: PROCESS(FULL)VARIABLE CNT2 : STD_LOGIC;BEGINIF FULLEVENT AND FULL = 1 THENCNT2 := NOT CNT2; - 如果溢出标志信号
13、FULL为高电平, D 触发器输出取反 IF CNT2 = 1 THEN FOUT = 1; ELSE FOUT 0);elsif clkevent and clk=1 thenif ena =1 thenif cqi 9 then cqi:=cqi+1;cout0);cout0);end if;end if;outy clkk,rst=rst,ena=ena,cout=e(0),outy=d(3 downto 0);u2:cnt10 port map(clk=e(0),rst=rst,ena=ena,cout=e(1),outy=d(7 downto 4);u3:cnt10 port map
14、(clk=e(1),rst=rst,ena=ena,cout=e(2),outy=d(11 downto 8);u4:cnt10 port map(clk=e(2),rst=rst,ena=ena,cout=e(3),outy=d(15 downto 12);end architecture one;3.3锁存器设计3.3.1锁存器及其应用所谓锁存器,就是输出端的状态不会随输入端的状态变化而变化,仅在有锁存信号时输入的状态被保存到输出,直到下一个锁存信号到来时才改变。典型的锁存器逻辑电路是 D 触发器电路。在 LED和数码管显示方面,要维持一个数据的显示,往往要持续的快速的刷新。尤其是在四段八
15、位数码管等这些要选通的显示设备上。在人类能够接受的刷新频率之内,大概每三十毫秒就要刷新一次。这就大大占用了处理器的处理时间,消耗了处理器的处理能力,还浪费了处理器的功耗。锁存器的使用可以大大的缓解处理器在这方面的压力。当处理器把数据传输到锁存器并将其锁存后,锁存器的输出引脚便会一直保持数据状态直到下一次锁存新的数据为止。这样在数码管的显示内容不变之前,处理器的处理时间和 IO 引脚便可以释放。可以看出,处理器处理的时间仅限于显示内容发生变化的时候,这在整个显示时间上只是非常少的一个部分。而处理器在处理完后可以有更多的时间来执行其他的任务。这就是锁存器在LED和数码管显示方面的作用: 节省了宝贵
16、的 MCU时间。3.3.216位锁存器源程序及其仿真波形library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity reg16b isport (load: in std_logic;din: in std_logic_vector(15 downto 0);dout: out std_logic_vector(15 downto 0);end reg16b;architecture art of reg16b isbeginprocess(load,din)beginif loadevent
17、and load=1thendout a a a a a a a a a a a a a a a a null;end case;end process;end;图 7七段数码管仿真波形4 计数器顶层设计4.1.1基于 VHDL的自顶向下的设计方法所谓自顶向下设计方法, 就是采用可完全独立于芯片厂商及其产品结构的描述语,在功能级对设计产品进行定义, 并结合功能仿真技术 , 以确保设计的正确性 , 能定义完成后 , 利用逻辑综合技术 , 把功能描述转换成某一具体结构芯片的网表文件, 输出给厂商的布局布线器进行布局布线。布局布线结果还可反标回同一仿真器, 进行包括功能和时序的后验证 , 以保证布局
18、布线所带来的门延时和线延时不会影响设计的性能。自顶向下设计方法的优越性是显而易见的。首先, 由于功能描述可完全独立于芯片结构 , 在设计的最初阶段 , 设计师可不受芯片结构的约束, 集中精力进行产品设计 ,避免了传统设计方法所带来的重新再设计风险, 大大缩短了设计周期。其次, 设计的再利用得到保证。目前的电子产品正向模块化发展,所谓模块化就是对以往设计成果进行修改 , 组合和再利用 , 产生全新的或派生设计, 而自顶向下设计方法的功能描述可与芯片结构无关。因此可以以一种IP 的方式进行存档 , 以便将来的重新利用。第三 , 设计规模大大提高。简单的语言描述即可完成复杂的功能 , 而不需要手工绘
19、图。第四,芯片选择更加灵活。设计师可在较短的时间内采用各种结构芯片来完成同一功能描述 , 从而在设计规模、速度、芯片价格及系统性能要求等方面进行平衡 , 选择最佳结果。4.1.2 顶层设计源文件及其仿真波形library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith;use ieee.std_logic_signed;entity ccnntt isport(ena0,rst0:in std_logic;clk1,clk2:in std_logic;ledout
20、:out std_logic_vector(27 downto 0);din: in std_logic_vector(7 downto 0);end entity;architecture one of ccnntt iscomponent DVFport (clk:in std_logic;DD : in std_logic_vector(7 downto 0);fout: out std_logic;component cnt10_4port(clkk,rst,ena:in std_logic;d:out std_logic_vector(15 downto 0);end compone
21、nt;component reg16bport(load: in std_logic;din : in std_logic_vector(15 downto 0);dout: out std_logic_vector(15 downto 0);end component;component led_controllerport(d:in std_logic_vector(3 downto 0);a:out std_logic_vector(6 downto 0);end component;signal y:std_logic;signal b,h:std_logic_vector(15 do
22、wnto 0);signal leds:std_logic_vector(27 downto 0);beginu1: DVF port map(clk=clk1,DD=din,fout=y);u2: cnt10_4 port map(clkk=y,rst=rst0, ena=ena0, d=b);u3: reg16b port map(load=clk2,din=b(15 downto 0),dout=h(15 downto 0);u4:led_controller port map(d=h(3 downto 0),a=leds(6 downto 0);u5: led_controller port map(d=h(7 downto 4),a=leds(13 downto 7);u6: led_controller port map(d=h(11 downto 8),a=leds(20 downto 14);u7: led_controller port map(d=h(15 downto 12),a=leds(27 downto 21);ledout=leds;end;图 8总程序仿真波形
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公司财务预算编制及执行标准
- 幼儿园食品安全管理与活动总结
- 零售行业员工激励机制设计指南
- 电子商务法实施细则解读与应用
- 幼儿园安全管理会议纪要范文
- 中学语文单元测试卷命题指南
- 高校网络安全意识提升活动方案
- 中小学乐团活动组织方案实例
- 员工不作为问题表现及整改措施
- 基于AI的在线教育个性化教学设计
- 高一职高期中数学试卷
- 2025年N1叉车司机模拟考试1000题及答案
- 棚改工作培训
- 胸痛中心标准化建设与管理流程
- 国有企业“十五五”规划编制要点
- 2025秋华师版(2024)数学八年级上册教学课件(福建专用)11.2 整式的乘法-2. 单项式与多项式相乘
- DB14∕T 3271-2025 疾控机构传染病实验室管理信息系统建设规范
- 园林绿化项目汇报
- 2025至2030年中国甾体激素原料药行业市场行情监测及未来趋势研判报告
- 2025年6月14日潮州市直遴选笔试真题及答案解析
- 县妇幼保健院“十五五”发展规划(2025年-2025年)
评论
0/150
提交评论