热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

QuartusⅡ11.0的数字跑表的设计与仿真

QuartusⅡ11.0的数字跑表的设计与仿真根据目前国内外流行的可编程逻辑器件设计趋势,本文选择了美国Altera公司的QuartusⅡ11.0开发软件作为平台,介绍了QuartusⅡ软
QuartusⅡ 11.0的数字跑表的设计与仿真
   根据目前国内外流行的可编程逻辑器件设计趋势,本文选择了美国Altera公司的Quartus Ⅱ 11.0开发软件作为平台,介绍了QuartusⅡ软件设计特点、典型的设计流程,以及引入具体的数字跑表的设计并进行了仿真,其结果符合预期要求。指出这种基于EDA软件的现代电子系统设计技术采用硬件描述语言进行模块化设计方法,已成为研制、开发数字系统最理想的选择, 是现代电子电路设计方法的一个趋势,体现了硬件设计向软件化方向发展的新思路。

  0 引言

  20世纪90年代,国际上电子和计算机技术先进的国家,一直在积极探索新的电子电路设计方法,在设计方法、工具等方面进行了彻底的变革,并取得了巨大的成功。在电子设计技术领域,可编程逻辑器件(PLD)可以通过软件编程而对其硬件结构和工作方式进行重构,使得硬件的设计可以如同软件设计那样方便快捷。目前国内使用最多的PLD是由美国Altera公司和Xilinx公司生产的,它们各为自己的芯片开发提供了高效集成的基于计算机的开发环境,Altera公司是提供Quartus Ⅱ和MAX+plus Ⅱ(现已基本淘汰)开发软件,而Xilinx公司则提供ISE(Intergrated Software Environment)开发软件。 Quartus Ⅱ 11.0是目前最新的版本,支持Altera名为Qsys的系统级集成工具新产品。它增强了调试方案,帮助您更快的完成电路板开发。这些增强措施包括外部存储器接口工具包的性能监视功能,它提高了收发器工具包的可用性。

  1 QuartusⅡ软件设计特点

  Alter公司的Quartus Ⅱ开发软件支持VHDL和Verilog HDL硬件描述语言的设计输入,基于图形的设计输入方式和集成系统级设计工具,它可以把设计、综合、布局布线、系统验证全部都集成一个无缝的开发环境中,其中还包括与第三方EDA工具的高效接口。其设计特点主要有以下几点:

  (1)基于模块的设计方法

  (2)更快的集成IP

  (3)在设计周期的早期对I/O管脚进行分配和确认

  (4)拥有存储器编译器

  (5)支持FPGA、CPLD以及基于HardCopy的ASIC设计

  (6)使用全新的命令行和脚本功能的自动化设计流程

  (7)Altera公司提供高级帮助教程帮助设计者了解Quartus Ⅱ软件的功能特性。

  2 QuartusⅡ软件的设计流程

  QuartusⅡ开发软件为设计者提供了一个完善的多平台设计环境,在设计流程的每个阶段,QuartusⅡ软件允许设计者使用QuartusⅡ的图形用户界面、EDA工具界面或者命令行界面,在整个设计流程中可以使用这些界面中的任意一个,也可以在不通的设计阶段使用不同的界面接口。如下图1所示是QuartusⅡ的典型的设计流程。

   

  图1 Quartus Ⅱ软件的典型设计流程

  3 数字跑表设计实例

  下面以Altera公司的可编程器件的开发工具Quartus Ⅱ 11.0为平台,设计一个数字跑表,该跑表具有复位、暂停、秒表计时等功能。

  3.1 数字跑表的设计要求

  图2是该数字跑表的结构示意图。跑表设3输入端,分别为时钟输入(CLK)、复位(CLR)和启动/暂停(PAUSE)按键。复位信号高电平有效,可对跑表异步清零;当启动/暂停键为低电平时跑表开始计时,为高点平时暂停,变低后在原来的数值基础上继续计数。控制信号的功能如表1所示。

   

  图2 数字跑表示意图

  表1 控制信号及功能

   

  3.2 数字跑表的设计文件

  利用Quartus Ⅱ软件开发PLD,设计文件的输入方法有图形输入、文本输入、波形输入、内存编辑以及由第三方EDA工具产生的EDIF网表输入、VQM格式输入等,由于输入方式不同而产生的文件格式也不样,例如用VHDL语言编写的文件格式是*.vhd,用Verilog HDL语言编写的文件格式是*.v,用块输入或图形输入的文件格式是*.bdf、*.gdf、*.bsf、*.sym,由第三方EDA工具产生的文件格式可以是*.edf、*.edif、*.vlg、*.vqm、*.vhdl等。

  为了便于显示,百分秒、秒和分钟信号皆采用BCD码计数方式,并直接输出到6个数码管显示出来。根据上述设计要求,用Verilog HDL语言对数字跑表描述如下。

  /*信号定义:

  CLK: 时钟信号;

  CLR: 异步复位信号;

  PAUSE: 暂停信号;

  MSH,MSL: 百分秒的高位和低位;

  SH,SL: 秒的高位和低位;

  MH,ML: 分钟的高位和低位。 */

  module paobiao(CLK,CLR,PAUSE,MSH,MSL,SH,SL,MH,ML);

  input CLK,CLR,PAUSE; output[3:0] MSH,MSL,SH,SL,MH,ML;

  reg[3:0] MSH,MSL,SH,SL,MH,ML;

  reg cn1,cn2; //cn1为百分秒向秒进位,cn2为秒向分进位

  //****************百分秒计数进程,每计满100,cn1产生一个进位*******

  always @(posedge CLK or posedge CLR)

  begin if(CLR) begin {MSH,MSL}<=8'h00; cn1<=0;end //异步复位

  else if(!PAUSE) //PAUSE为0时正常计数,为1时暂停计数

  begin

  if (MSL==9) begin MSL<=0;

  if (MSH==9) begin MSH<=0;cn1<=1;end

  else MSH<=MSH+1;end

  else begin MSL<=MSL+1;cn1<=0;end

  end

  end

  //******************秒计数进程,每计满60,cn2产生一个进位*********

  always @(posedge cn1 or posedge CLR)

  begin if(CLR) begin {SH,SL}<=8'h00;cn2<=0; end //异步复位

  else if(SL==9) begin SL<=0;

  if (SH==5) begin SH<=0;cn2<=1; end

  else SH<=SH+1;end

  else begin SL<=SL+1;cn2<=0;end

  end

  //******************分钟计数进程,每计满60,系统自动清零*********

  always @(posedge cn2 or posedge CLR)

  begin if(CLR) begin {MH,ML}<=8'h00;end //异步复位

  else if (ML==9) begin ML<=0;

  if(MH==5) MH<=0;else MH<=MH+1;end

  else ML<=ML+1;

  end

  endmodule

  3.3 数字跑表的编译与仿真

  对工程设计文件全部编程完毕后,还要对设计项目进行编译和仿真,这样才能确定所编写的程序是否正确。Quartus Ⅱ软件的集成综合工具除了支持VHDL语言设计文件或Verilog HDL语言设计文件、AHDL语言的综合分析外,还能提供对综合过程进行控制的选项。

  设计者也可以根据工程项目的需求采用第三方公司提供的EDA综合工具,例如Synplicity公司的综合工具软件Synplify/Synplify Pro,它们在综合策略和优化手段上有大幅度的提高,特别是其先进的Timing Driven(时序驱动)和B.E.S.T(行为级综合提取技术)算法引擎,使其综合结果和利用Quartus Ⅱ软件自身的集成综合器综合的结果相比,占用的面积更小,速度更快,消耗的资源更小。

  本设计是一个小型项目,我们仅用Quartus Ⅱ软件自身的编译器进行即可。只需要执行菜单命令Process→Start Compilation就可启动设计项目的全编译过程,在状态窗口将显示全编译过程中产生的系统信息,如果有错误,将显示并分析、定位该错误信息,设计者只要在该错误信息上双击即可定位到具体的设计文件。

  完成了工程设计项目的分析、综合、适配、逻辑优化组合后,还需要利用第三方EDA工具或Quartus Ⅱ软件提供的仿真器对工程设计项目的功能逻辑和时序逻辑进行仿真。在此选用Quartus Ⅱ软件自带的仿真器对数字跑表进行仿真,其功能仿真波形的一部分如下图3所示,该数字跑表实现了预想的各种功能。

   

  图3 数字跑表功能仿真波形

  4 结束语

  根据目前国内外流行的可编程逻辑器件设计趋势,本文选择了美国Altera公司的Quartus Ⅱ 11.0开发软件作为平台,介绍了QuartusⅡ软件设计特点、典型的设计流程,以及引入具体的数字跑表的设计并进行了仿真,其结果符合预期要求。指出这种基于EDA软件的现代电子系统设计技术采用硬件描述语言进行模块化设计方法,已成为研制、开发数字系统最理想的选择, 是现代电子电路设计方法的一个趋势,体现了硬件设计向软件化方向发展的新思路。


推荐阅读
  • 本文讨论了clone的fork与pthread_create创建线程的不同之处。进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合。在调用系统调用fork创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父进程,具有良好的并发性。但是二者之间的通讯需要通过专门的通讯机制,另外通过fork创建子进程系统开销很大。因此,在某些情况下,使用clone或pthread_create创建线程可能更加高效。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 本文介绍了PhysioNet网站提供的生理信号处理工具箱WFDB Toolbox for Matlab的安装和使用方法。通过下载并添加到Matlab路径中或直接在Matlab中输入相关内容,即可完成安装。该工具箱提供了一系列函数,可以方便地处理生理信号数据。详细的安装和使用方法可以参考本文内容。 ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • Android系统移植与调试之如何修改Android设备状态条上音量加减键在横竖屏切换的时候的显示于隐藏
    本文介绍了如何修改Android设备状态条上音量加减键在横竖屏切换时的显示与隐藏。通过修改系统文件system_bar.xml实现了该功能,并分享了解决思路和经验。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • 3.223.28周学习总结中的贪心作业收获及困惑
    本文是对3.223.28周学习总结中的贪心作业进行总结,作者在解题过程中参考了他人的代码,但前提是要先理解题目并有解题思路。作者分享了自己在贪心作业中的收获,同时提到了一道让他困惑的题目,即input details部分引发的疑惑。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
author-avatar
秋凉凉_e1998
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有