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


推荐阅读
  • 按照频率降序打印数字 ... [详细]
  • 利用 Jest 和 Supertest 实现接口测试的全面指南
    本文深入探讨了如何使用 Jest 和 Supertest 进行接口测试,通过实际案例详细解析了测试环境的搭建、测试用例的编写以及异步测试的处理方法。 ... [详细]
  • 本教程将深入探讨C#编程语言中的条件控制结构,包括if语句和switch语句的使用方法。通过本课的学习,您将掌握如何利用这些控制结构来实现程序的条件分支逻辑。 ... [详细]
  • 本文旨在介绍在iOS平台进行直播技术开发前的准备工作,重点讲解AVFoundation框架的基本概念和使用方法。通过对AVFoundation的深入理解,开发者能够更好地掌握直播应用中的音视频处理技巧。 ... [详细]
  • Go 通过 Map/Filter/ForEach 等流式 API 高效处理数据
    go,通过,map,filter,foreach,等,流,式,ap ... [详细]
  • Gradle复合构建详解
    自Gradle 3.3起,复合构建功能得以实现,这是一种能够整合其他独立构建的高级构建模式。本文将详细介绍复合构建与多项目构建的区别,以及如何在实际项目中应用复合构建。 ... [详细]
  • 2023年PHP实现1GB视频上传的最佳实践
    本文将详细介绍如何使用PHP处理1GB大小的视频上传问题,包括文件类型验证、上传大小限制设置及优化上传过程,确保高效稳定地完成大文件上传。 ... [详细]
  • 深入理解希尔排序算法
    本文详细介绍了希尔排序的原理及其相对于传统插入排序的优势,并通过实例解析了希尔排序的具体实现过程,包括代码示例及性能分析。 ... [详细]
  • 近期探讨了‘内部螺旋矩阵算法’的实现细节,并深入分析了面向对象编程中的可扩展性问题。基于这些讨论,本文通过引入桥梁设计模式对原有代码进行了优化与重构,以增强代码的灵活性和可维护性。 ... [详细]
  • Python基础教程(一)
    本篇教程将介绍Python中的字符串格式化方法、用户输入处理以及基本的运算符和控制结构。 ... [详细]
  • 本文介绍如何在Ubuntu操作系统中为DELL Latitude系列笔记本配置触摸板的自定义快捷键。此方法不仅适用于DELL品牌,其他品牌的笔记本也可能适用。通过编写简单的脚本,用户可以实现触摸板的快速开关。 ... [详细]
  • 本文探讨了如何在 Spring 3 MVC 应用程序中配置 MySQL 数据库连接,通过 XML 配置实现 JDBC 直接操作数据库,而不使用 Hibernate 等额外框架。 ... [详细]
  • Python 文件操作与异常处理全面指南
    本文详细介绍了Python中文件操作的基本方法和异常处理技巧,包括文件的创建、读写、删除等操作,以及如何通过异常处理机制来增强程序的健壮性。 ... [详细]
  • 本文探讨了前端包管理器的核心功能,包括注册机制、文件存储、上传下载、以及依赖分析等关键特性,并介绍了几种流行的前端包管理工具。 ... [详细]
  • Python多线程编程详解
    本文深入探讨了Python中的多线程机制,包括线程的基本概念、创建线程的方法以及线程间的通信策略。 ... [详细]
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社区 版权所有