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


推荐阅读
  • 毕业设计:基于机器学习与深度学习的垃圾邮件(短信)分类算法实现
    本文详细介绍了如何使用机器学习和深度学习技术对垃圾邮件和短信进行分类。内容涵盖从数据集介绍、预处理、特征提取到模型训练与评估的完整流程,并提供了具体的代码示例和实验结果。 ... [详细]
  • 本题探讨如何通过最大流算法解决农场排水系统的设计问题。题目要求计算从水源点到汇合点的最大水流速率,使用经典的EK(Edmonds-Karp)和Dinic算法进行求解。 ... [详细]
  • 本文介绍如何在现有网络中部署基于Linux系统的透明防火墙(网桥模式),以实现灵活的时间段控制、流量限制等功能。通过详细的步骤和配置说明,确保内部网络的安全性和稳定性。 ... [详细]
  • 优化局域网SSH连接延迟问题的解决方案
    本文介绍了解决局域网内SSH连接到服务器时出现长时间等待问题的方法。通过调整配置和优化网络设置,可以显著缩短SSH连接的时间。 ... [详细]
  • 本文详细介绍了Java中的输入输出(IO)流,包括其基本概念、分类及应用。IO流是用于在程序和外部资源之间传输数据的一套API。根据数据流动的方向,可以分为输入流(从外部流向程序)和输出流(从程序流向外部)。此外,还涵盖了字节流和字符流的区别及其具体实现。 ... [详细]
  • 创建项目:Visual Studio Online 入门指南
    本文介绍如何使用微软的 Visual Studio Online(VSO)创建和管理开发项目。作为一款基于云计算的开发平台,VSO 提供了丰富的工具和服务,简化了项目的配置和部署流程。 ... [详细]
  • 深入解析Redis内存对象模型
    本文详细介绍了Redis内存对象模型的关键知识点,包括内存统计、内存分配、数据存储细节及优化策略。通过实际案例和专业分析,帮助读者全面理解Redis内存管理机制。 ... [详细]
  • 作者:守望者1028链接:https:www.nowcoder.comdiscuss55353来源:牛客网面试高频题:校招过程中参考过牛客诸位大佬的面经,但是具体哪一块是参考谁的我 ... [详细]
  • 作为一名专业的Web前端工程师,掌握HTML和CSS的命名规范是至关重要的。良好的命名习惯不仅有助于提高代码的可读性和维护性,还能促进团队协作。本文将详细介绍Web前端开发中常用的HTML和CSS命名规范,并提供实用的建议。 ... [详细]
  • 在尝试用另一台电脑的MySQL文件替换本地D:\xampp\mysql目录后,MySQL服务无法启动。错误提示显示MySQL意外关闭,可能是由于端口冲突、依赖缺失、权限问题或崩溃等原因引起。 ... [详细]
  • C语言标准及其GCC编译器版本
    编程语言的发展离不开持续的维护和更新。本文将探讨C语言的标准演变以及GCC编译器如何支持这些标准,确保其与时俱进,满足现代开发需求。 ... [详细]
  • 20100423:Fixes:更新批处理,以兼容WIN7。第一次系统地玩QT,于是诞生了此预备式:【QT版本4.6.0&#x ... [详细]
  • 尽管深度学习带来了广泛的应用前景,其训练通常需要强大的计算资源。然而,并非所有开发者都能负担得起高性能服务器或专用硬件。本文探讨了如何在有限的硬件条件下(如ARM CPU)高效运行深度神经网络,特别是通过选择合适的工具和框架来加速模型推理。 ... [详细]
  • 解析SQL查询结果的排序问题及其解决方案
    本文探讨了为什么某些SQL查询返回的数据集未能按预期顺序排列,并提供了详细的解决方案,帮助开发者理解并解决这一常见问题。 ... [详细]
  • 本文详细介绍如何在Linux系统中配置SSH密钥对,以实现从一台主机到另一台主机的无密码登录。内容涵盖密钥对生成、公钥分发及权限设置等关键步骤。 ... [详细]
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社区 版权所有