热门标签 | 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软件的现代电子系统设计技术采用硬件描述语言进行模块化设计方法,已成为研制、开发数字系统最理想的选择, 是现代电子电路设计方法的一个趋势,体现了硬件设计向软件化方向发展的新思路。


推荐阅读
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • 本文详细解析了Python中的os和sys模块,介绍了它们的功能、常用方法及其在实际编程中的应用。 ... [详细]
  • 解读MySQL查询执行计划的详细指南
    本文旨在帮助开发者和数据库管理员深入了解如何解读MySQL查询执行计划。通过详细的解析,您将掌握优化查询性能的关键技巧,了解各种访问类型和额外信息的含义。 ... [详细]
  • 本文详细介绍了macOS系统的核心组件,包括如何管理其安全特性——系统完整性保护(SIP),并探讨了不同版本的更新亮点。对于使用macOS系统的用户来说,了解这些信息有助于更好地管理和优化系统性能。 ... [详细]
  • 从 .NET 转 Java 的自学之路:IO 流基础篇
    本文详细介绍了 Java 中的 IO 流,包括字节流和字符流的基本概念及其操作方式。探讨了如何处理不同类型的文件数据,并结合编码机制确保字符数据的正确读写。同时,文中还涵盖了装饰设计模式的应用,以及多种常见的 IO 操作实例。 ... [详细]
  • 本文介绍了如何使用JQuery实现省市二级联动和表单验证。首先,通过change事件监听用户选择的省份,并动态加载对应的城市列表。其次,详细讲解了使用Validation插件进行表单验证的方法,包括内置规则、自定义规则及实时验证功能。 ... [详细]
  • 本文详细介绍了如何使用 Yii2 的 GridView 组件在列表页面实现数据的直接编辑功能。通过具体的代码示例和步骤,帮助开发者快速掌握这一实用技巧。 ... [详细]
  • 解决PHP与MySQL连接时出现500错误的方法
    本文详细探讨了当使用PHP连接MySQL数据库时遇到500内部服务器错误的多种解决方案,提供了详尽的操作步骤和专业建议。无论是初学者还是有经验的开发者,都能从中受益。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • Python自动化处理:从Word文档提取内容并生成带水印的PDF
    本文介绍如何利用Python实现从特定网站下载Word文档,去除水印并添加自定义水印,最终将文档转换为PDF格式。该方法适用于批量处理和自动化需求。 ... [详细]
  • XNA 3.0 游戏编程:从 XML 文件加载数据
    本文介绍如何在 XNA 3.0 游戏项目中从 XML 文件加载数据。我们将探讨如何将 XML 数据序列化为二进制文件,并通过内容管道加载到游戏中。此外,还会涉及自定义类型读取器和写入器的实现。 ... [详细]
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社区 版权所有