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