‘壹’ eda技术的核心技术是什么
eda
一、什么是EDA
20世纪90年代,国际上电子和计算机技术较先进的国家,一直在积极探索新的电子电路设计方法,并在设计方法、工具等方面进行了彻底的变革,取得了巨大成功。在电子技术设计领域,可编程逻辑器件(如CPLD、FPGA)的应用,已得到广泛的普及,这些器件为数字系统的设计带来了极大的灵活性。这些器件可以通过软件编程而对其硬件结构和工作方式进行重构,从而使得硬件的设计可以如同软件设计那样方便快捷。这一切极大地改变了传统的数字系统设计方法、设计过程和设计观念,促进了EDA技术的迅速发展。
EDA是电子设计自动化(Electronic Design Automation)的缩写,在20世纪90年代初从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言HDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。EDA技术的出现,极大地提高了电路设计的效率和可*性,减轻了设计者的劳动强度。
二、设计方法
前端设计(系统建模RTL 级描述)后端设计(FPGAASIC)系统建模
IP 复用
前端设计
系统描述:建立系统的数学模型。
功能描述:描述系统的行为或各子模块之间的数
据流图。
逻辑设计:将系统功能结构化,通常以文本、原
理图、逻辑图、布尔表达式来表示设计结果。
仿真:包括功能仿真和时序仿真,主要验证系统
功能的正确性及时序特性。
三、几个有关EDA的专题网站
EDA中心 www.eda.ac.cn
EDA中国门户网站 www.edacn.net
中国EDA技术网 www.51eda.com
EDA爱好者 www.edafans.com
EDA教学与研究 www.edateach.com
附文:
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
EDA技术的发展与应用
1 前言 ---- 人类社会已进入到高度发达的信息化社会,信息社会的发展离不开电子产品的进步。 现代电子产品在性能提高、复杂度增大的同时,价格却一直呈下降趋势,而且产品更新换代的步伐 也越来越快,实现这种进步的主要原因就是生产制造技术和电子设计技术的发展。前者以微细加工 技术为代表,目前已进展到深亚微米阶段,可以在几平方厘米的芯片上集成数千万个晶体管;后者 的核心就是EDA技术。EDA是指以计算机为工作平台,融合了应用电子技术、计算机技术、智能化 技术最新成果而研制成的电子CAD通用软件包,主要能辅助进行三方面的设计工作:IC设计,电子 电路设计以及PCB设计。没有EDA技术的支持,想要完成上述超大规模集成电路的设计制造是不可 想象的,反过来,生产制造技术的不断进步又必将对EDA技术提出新的要求。
2 EDA技术的发展 ---- 回顾近30年电子设计技术的发展历程,可将EDA技术分为三个阶段。 ---- 七十年代为CAD阶段,这一阶段人们开始用计算机辅助进行IC版图编辑和PCB布局布 线,取代了手工操作,产生了计算机辅助设计的概念。 ---- 八十年代为CAE阶段,与CAD相比,除了纯粹的图形绘制功能外,又增加了电路功能设 计和结构设计,并且通过电气连接网络表将两者结合在一起,以实现工程设计,这就是计算机辅助 工程的概念。CAE的主要功能是:原理图输入,逻辑仿真,电路分析,自动布局布线,PCB后分 析。 ---- 九十年代为ESDA阶段。尽管CAD/CAE技术取得了巨大的成功,但并没有把人从繁重的 设计工作中彻底解放出来。在整个设计过程中,自动化和智能化程度还不高,各种EDA软件界面千 差万别,学习使用困难,并且互不兼容,直接影响到设计环节间的衔接。基于以上不足,人们开始 追求贯彻整个设计过程的自动化,这就是ESDA即电子系统设计自动化。
3 ESDA技术的基本特征 ---- ESDA代表了当今电子设计技术的最新发展方向,它的基本特征是:设计人员按照"自顶 向下"的设计方法,对整个系统进行方案设计和功能划分,系统的关键电路用一片或几片专用集成 电路(ASIC)实现,然后采用硬件描述语言(HDL)完成系统行为级设计,最后通过综合器和适配 器生成最终的目标器件。这样的设计方法被称为高层次的电子设计方法,具体流程还将在4.2节中 做深入介绍。下面介绍与ESDA基本特征有关的几个概念。 ---- 3.1 "自顶向下"的设计方法 ---- 10年前,电子设计的基本思路还是选择标准集成电路"自底向上"(Bottom-Up)地构 造出一个新的系统,这样的设计方法就如同一砖一瓦地建造金字塔,不仅效率低、成本高而且还容 易出错。 ---- 高层次设计给我们提供了一种"自顶向下"(Top-Down)的全新的设计方法,这种设计 方法首先从系统设计入手,在顶层进行功能方框图的划分和结构设计。在方框图一级进行仿真、纠 错,并用硬件描述语言对高层次的系统行为进行描述,在系统一级进行验证。然后用综合优化工具 生成具体门电路的网表,其对应的物理实现级可以是印刷电路板或专用集成电路。由于设计的主要 仿真和调试过程是在高层次上完成的,这不仅有利于早期发现结构设计上的错误,避免设计工作的 浪费,而且也减少了逻辑功能仿真的工作量,提高了设计的一次成功率。 ---- 3.2 ASIC设计 ---- 现代电子产品的复杂度日益加深,一个电子系统可能由数万个中小规模集成电路构 成,这就带来了体积大、功耗大、可靠性差的问题,解决这一问题的有效方法就是采用ASIC (Application Specific Integrated Circuits)芯片进行设计。ASIC按照设计方法的不同可分 为:全定制ASIC,半定制ASIC,可编程ASIC(也称为可编程逻辑器件)。 ---- 设计全定制ASIC芯片时,设计师要定义芯片上所有晶体管的几何图形和工艺规则,最 后将设计结果交由IC厂家掩膜制造完成。优点是:芯片可以获得最优的性能,即面积利用率高、速 度快、功耗低。缺点是:开发周期长,费用高,只适合大批量产品开发。 ---- 半定制ASIC芯片的版图设计方法有所不同,分为门阵列设计法和标准单元设计法,这 两种方法都是约束性的设计方法,其主要目的就是简化设计,以牺牲芯片性能为代价来缩短开发时 间。 ---- 可编程逻辑芯片与上述掩膜ASIC的不同之处在于:设计人员完成版图设计后,在实验 室内就可以烧制出自己的芯片,无须IC厂家的参与,大大缩短了开发周期。 ---- 可编程逻辑器件自七十年代以来,经历了PAL、GAL、CPLD、FPGA几个发展阶段,其中 CPLD/FPGA属高密度可编程逻辑器件,目前集成度已高达200万门/片,它将掩膜ASIC集成度高的 优点和可编程逻辑器件设计生产方便的特点结合在一起,特别适合于样品研制或小批量产品开发, 使产品能以最快的速度上市,而当市场扩大时,它可以很容易的转由掩膜ASIC实现,因此开发风 险也大为降低。 ---- 上述ASIC芯片,尤其是CPLD/FPGA器件,已成为现代高层次电子设计方法的实现载 体。 ---- 3.3 硬件描述语言 ---- 硬件描述语言(HDL-Hardware Description Language)是一种用于设计硬件电子 系统的计算机语言,它用软件编程的方式来描述电子系统的逻辑功能、电路结构和连接形式,与传 统的门级描述方式相比,它更适合大规模系统的设计。例如一个32位的加法器,利用图形输入软件 需要输入500至1000个门,而利用VHDL语言只需要书写一行A=B+C即可,而且VHDL语言可读性强, 易于修改和发现错误。早期的硬件描述语言,如ABEL-HDL、AHDL,是由不同的EDA厂商开发的,互 相不兼容,而且不支持多层次设计,层次间翻译工作要由人工完成。为了克服以上缺陷,1985年 美国国防部正式推出了VHDL(Very High Speed IC Hardware Description Language)语言, 1987年IEEE采纳VHDL为硬件描述语言标准(IEEE STD-1076)。 ---- VHDL是一种全方位的硬件描述语言,包括系统行为级、寄存器传输级和逻辑门级多个 设计层次,支持结构、数据流、行为三种描述形式的混合描述,因此VHDL几乎覆盖了以往各种硬件 描述语言的功能,整个自顶向下或自底向上的电路设计过程都可以用VHDL来完成。另外,VHDL还 具有以下优点: VHDL的宽范围描述能力使它成为高层次设计的核心,将设计人员的工作重心提高到了系统功 能的实现与调试,只需花较少的精力用于物理实现。 VHDL可以用简洁明确的代码描述来进行复杂控制逻辑的设计,灵活且方便,而且也便于设计 结果的交流、保存和重用。 VHDL的设计不依赖于特定的器件,方便了工艺的转换。 VHDL是一个标准语言,为众多的EDA厂商支持,因此移植性好。 ---- 3.4 系统框架结构 ---- EDA系统框架结构(Framework)是一套配置和使用EDA软件包的规范,目前主要的EDA 系统都建立了框架结构,如Cadence公司的Design Framework,Mentor公司的Falcon Framework等,这些框架结构都遵守国际CFI组织(CAD Framework Initiative)制定的统一技术 标准。Framework能将来自不同EDA厂商的工具软件进行优化组合,集成在一个易于管理的统一的 环境之下,而且还支持任务之间、设计师之间在整个产品开发过程中实现信息的传输与共享,这是 并行工程和Top-Down设计方法的实现基础。
4 EDA技术的基本设计方法 ---- EDA技术的每一次进步,都引起了设计层次上的一个飞跃。 ---- 物理级设计主要指IC版图设计,一般由半导体厂家完成,对电子工程师并没有太大的 意义,因此本文重点介绍电路级设计和系统级设计。 ---- 4.1 电路级设计 ----电子工程师接受系统设计任务后,首先确定设计方案,同时要选择能实现该方案的合适 元器件,然后根据具体的元器件设计电路原理图。接着进行第一次仿真,包括数字电路的逻辑模 拟、故障分析、模拟电路的交直流分析、瞬态分析。系统在进行仿真时,必须要有元件模型库的支 持,计算机上模拟的输入输出波形代替了实际电路调试中的信号源和示波器。这一次仿真主要是检 验设计方案在功能方面的正确性。 ---- 仿真通过后,根据原理图产生的电气连接网络表进行PCB板的自动布局布线。在制作 PCB板之前还可以进行后分析,包括热分析、噪声及窜扰分析、电磁兼容分析、可靠性分析等,并 且可以将分析后的结果参数反标回电路图,进行第二次仿真,也称为后仿真,这一次仿真主要是检 验PCB板在实际工作环境中的可行性。 ---- 由此可见,电路级的EDA技术使电子工程师在实际的电子系统产生之前,就可以全面地 了解系统的功能特性和物理特性,从而将开发过程中出现的缺陷消灭在设计阶段,不仅缩短了开发 时间,也降低了开发成本。 ---- 4.2 系统级设计 ---- 进入90年代以来,电子信息类产品的开发出现了两个明显的特点:一是产品的复杂程 度加深,二是产品的上市时限紧迫。然而电路级设计本质上是基于门级描述的单层次设计,设计的 所有工作(包括设计输入,仿真和分析,设计修改等)都是在基本逻辑门这一层次上进行的,显然 这种设计方法不能适应新的形势,为此引入了一种高层次的电子设计方法,也称为系统级的设计方 法。 ---- 高层次设计是一种"概念驱动式"设计,设计人员无须通过门级原理图描述电路,而是 针对设计目标进行功能描述,由于摆脱了电路细节的束缚,设计人员可以把精力集中于创造性的概 念构思与方案上,一旦这些概念构思以高层次描述的形式输入计算机后,EDA系统就能以规则驱动 的方式自动完成整个设计。这样,新的概念得以迅速有效的成为产品,大大缩短了产品的研制周 期。不仅如此,高层次设计只是定义系统的行为特性,可以不涉及实现工艺,在厂家综合库的支持 下,利用综合优化工具可以将高层次描述转换成针对某种工艺优化的网表,工艺转化变得轻松容 易。具体的设计流程见图3。 ---- 高层次设计步骤如下: ---- 第一步: ---- 按照"自顶向下"的设计方法进行系统划分。 ---- 第二步: ---- 输入VHDL代码,这是高层次设计中最为普遍的输入方式。此外,还可以采用图形输入 方式(框图,状态图等),这种输入方式具有直观、容易理解的优点。 ---- 第三步: ---- 将以上的设计输入编译成标准的VHDL文件。对于大型设计,还要进行代码级的功能仿 真,主要是检验系统功能设计的正确性,因为对于大型设计,综合、适配要花费数小时,在综合前 对源代码仿真,就可以大大减少设计重复的次数和时间,一般情况下,可略去这一仿真步骤。 ---- 第四步: ---- 利用综合器对VHDL源代码进行综合优化处理,生成门级描述的网表文件,这是将高层次 描述转化为硬件电路的关键步骤。 ---- 综合优化是针对ASIC芯片供应商的某一产品系列进行的,所以综合的过程要在相应的 厂家综合库支持下才能完成。综合后,可利用产生的网表文件进行适配前的时序仿真,仿真过程不 涉及具体器件的硬件特性,较为粗略。一般设计,这一仿真步骤也可略去。 ---- 第五步: ---- 利用适配器将综合后的网表文件针对某一具体的目标器件进行逻辑映射操作,包括底 层器件配置、逻辑分割、逻辑优化和布局布线。适配完成后,产生多项设计结果:①适配报告,包 括芯片内部资源利用情况,设计的布尔方程描述情况等;②适配后的仿真模型;③器件编程文件。 根据适配后的仿真模型,可以进行适配后的时序仿真,因为已经得到器件的实际硬件特性(如时延 特性),所以仿真结果能比较精确地预期未来芯片的实际性能。如果仿真结果达不到设计要求,就 需要修改VHDL源代码或选择不同速度品质的器件,直至满足设计要求。 ---- 第六步: ---- 将适配器产生的器件编程文件通过编程器或下载电缆载入到目标芯片FPGA或CPLD中。 如果是大批量产品开发,通过更换相应的厂家综合库,可以很容易转由ASIC形式实现。
5 结束语 ---- EDA技术是电子设计领域的一场革命,目前正处于高速发展阶段,每年都有新的EDA工 具问世,我国EDA技术的应用水平长期落后于发达国家,因此,广大电子工程人员应该尽早掌握这 一先进技术,这不仅是提高设计效率的需要,更是我国电子工业在世界市场上生存、竟争与发展的 需要。
‘贰’ 为什么阶数为4的群是Abel
阶数为4的群在同构意义下只有两个.都是Abel群
由Lagrange定理,群G的阶是4,则其元素的阶只能是1,2,4.
其中单位元e的阶是1.
若除单位元以外存在4阶元素a.则G={e,a,a^2,a^3}=<a>,是循环群,所以是Abel群.
若除单位元以外所有元素都是2阶的,则a=a^-1,b=b^-1,c=c^-1,所以ab≠a,ab≠b,ab≠e,所以ab=c,同理ab=ba=c,ac=ca=b,bc=cb=a,所以是Abel群.
‘叁’ gal20v8是什么
GAL20V8是通用阵列逻辑器件,现场可编程器件。它最多可以有20个输入引脚、最多可以有8个输出引脚。它既可以实现组合逻辑的逻辑功能,也可以实现时序逻辑的逻辑功能。
通用可编程器件GAL20V8有8个输出引脚,分别标为IO0~IO7,有I1~I10、I12和I13共12个专用输入引脚,另有I0/CLK和I11/OE两个引脚,当被编程的电路需要时钟信号和使用输出允许控制时,时钟脉冲和输出允许控制信号就只能分别从I0/CLK和I11/OE这两个引脚输入;当不需要这两个信号(或一个)时,它们(或一个)可用作数据输入引脚。IO0~IO7在某些场合,也可用于输入功能,或分时用于输入/输出功能,可由用户决定。所以说它最多有20个输入、8个输出(至少有2个引脚用于输出)。
GAL20V8内部,包括输入缓冲门、输出反馈缓冲门、与门阵列、输出逻辑宏单元OLMC(内含或阵列)和输出三态门等。
要对通用可编程器件GAL20V8进行编程,需要使用专用的软件工具和能对GAL器件编程的编程器,才可以向GAL20V8器件内写入所需要的逻辑功能。
设计和操作过程大体如下:
1.编辑扩展名为“.PLD” 的源文件,该文件用于描述在GAL20V8内部实现的逻辑功能。此为文本文件,但格式应符合相应编译软件的要求,也可以用ABEL语言编辑扩展名为“.ABL”的源文件,只是要有相应的编译软件完成编译才能使用。
2.用相应的软件对已设计的源文件进行编译,以生成GAL20V8的熔丝图文件,扩展名为“.JED”。
3.用编程设备向GAL20V8器件内写入熔丝图文件所规定的内容,即对GAL20V8进行编程。
由于不同厂商提供的编程软件和编程设备有所不同,具体操作细节请阅读有关设备的使用手册。
‘肆’ cain&abel 怎么用啊
Cain 是着名的 Windows 平台口令恢复工具。它能通过网络嗅探很容易的恢复多种口 令,能使用字典破解加密的口令,暴力口令破解,录音VoIP(IP电话)谈话内容,解码编 码化的口令,获取无线网络密钥,恢复缓存的口令,分析路由协议等。 系统组成 Cain & Abel 是两个程序。Cain 是图形界面主程序;Abel 是后台服务程序,由两个文 件组成:Abel.exe 和Abel.dll。 l 10MB 硬盘空间 l MicrosoftWindows2000/XP/2003 l Winpcap 包驱动 (V2.3 或以上;4.0版本支持AirPcap 网卡) l 程序由以下文件组成: cain.exe 主程序 CA_UserManual.chm 用户手册 Abel.exe 名为Abel 的可的Windows 服务 Abell.dll 程序支持文件 Wordlist.txt 小型口令文件 Instal.log 程序安装日志 oui.txt MAC 地址厂商文件 <安装目录>\winrtgen\winrtgen.exe 字典生成器 <安装目录>\winrtgen\charset.txt 字符集文件 <安装目录>\Driver\WinPcap_4_0_beta2.exe 原始Winpcap 驱动程序
‘伍’ 电脑软件编程入门好学吗
初学电脑编程需要学习英语,选择一门编程语言,要有数学基础,具体介绍如下:
1、英语基础
计算机英语与传统的英语知识不同,需要了解的大部分是计算机的专业单词或者词汇,普遍较为简单。但是在高级编程中,会出现比较生涩的词汇,对于想要参与计算机语言设计以及在职业发展上有更多追求的同学可以自学一下大学英语。
2、选择一门编程语言
选择一门编程语言。虽然目前编程语言有600种左右,但是比较流行的编程语言只有几十种,所以尽量选择流行程度比较高的编程语言来入门编程。对于没有明确编程场景的初学者来说,尽量选择全场景编程语言,比如Java、Python、C#等就是不错的选择
3、数学基础
当然拥有初中阶段的数学基础也可以成为一名合格的程序员,这也是目前很多计算机编程培训学校招收初中毕业学生的原因。但想要成为一名优秀的程序员,最少要高中及以上的数学基础,而且要懂得如何举一反三,灵活运用。
4、了解计算机操作系统原理
所有的开发或者说软件应用都是在特定的操作系统上进行的,所以计算机操作系统原理可以说是基础中的基础是必须要了解的。
5、数据结构和算法
这门课程能够决定一个人程序设计水平的高低,是学习过程中需要重点掌握的。C和C++都是可以选择的,前期可以先学C,再学C++会相对简单一些。
在学习编程语言的过程中,也需要同时学习计算机网络、数据库等相关知识,在当前的云计算和大数据时代背景下,还需要掌握如何通过云计算(PaaS)来辅助开发,以及如何利用大数据平台的各种资源。
‘陆’ 自动化行业
VBScript 脚本
自动化行业的技术发展越来越复杂,工艺要求也越来越具各自的特色,单一的组态功能已不能满足用户的要求,二次开发的要求日益迫切。
五花八门的伪脚本语言,语法单一,格式单调,功能有限,而用户希望使用某种简单而又标准的脚本语言,来进行脚本开发。
杰控FameView组态软件率先选用并集成了大家熟悉的VBScript脚本语言作为自己的脚本开发语言,在功能强大的组态背后,提供了一套完善的二次开发环境;您只需稍具VB语言的知识,便可以开发出功能丰富的工程项目;您可以任意编写自己的特殊算法,并且经过长时间实践的考验,证明VBScript脚本在组态软件的应用是稳定、可靠、快速、成功的。
特色:
n 真正的VBScript脚本嵌入,VB语言中的所有函数和语句都可以被使用;
n 组态系统提供了多达500个开放的系统函数,供您访问系统的组态和运行资源,或实现某些特殊的功能和算法;
n 系统提供了画面脚本和全局脚本供您使用;
n 全局脚本在后台执行,通过脚本文件的方式来体现脚本内容;通过定义脚本运行策略,用时间或变量事件可以触发执行脚本文件,全局脚本运行结果可被整个系统共享;
n 画面脚本包含在某幅画面中,每个画面可以包含500个画面脚本,每个画面脚本可以编写500条脚本语言;可以在画面打开、关闭或运行过程中来执行画面脚本;也可以用画面提供的定时器来循环执行画面脚本,也可以通过画面中的鼠标等事件来执行,画面关闭后,画面脚本便停止运行;
n 脚本编辑器为智能编辑器,通过文本颜色和字符大小写可以对VBScript关键字、系统函数、字符串、数字进行区分和检查;
n 用户可以定义自己的子程序;
n 面向对象的脚本函数,具有无限的扩展性,随着应用的发展,可以方便的添加更多的脚本函数;
n 专门为某些特殊的应用和行业开发了实用的脚本函数;
我们可以为用户提出的特殊要求,免费编写脚本函数,使系统具有您自己的特色
Verilog HDL语言在FPGA/CPLD开发中的应用
1 引言
近30年来,由于微电子学和计算机科学的迅速发展,给EDA(电子设计自动化)行业带来了巨大的变化。特别是进入20世纪90年代后,电子系统已经从电路板级系统集成发展成为包括ASIC、FPGA和嵌入系统的多种模式。可以说EDA产业已经成为电子信息类产品的支柱产业。EDA之所以能蓬勃发展的关键因素之一就是采用了硬件描述语言(HDL)描述电路系统。就FPGA和CPLD开发而言,比较流行的HDL主要有Verilog HDL、VHDL、ABEL-HDL和 AHDL 等,其中VHDL和Verilog HDL因适合标准化的发展方向而最终成为IEEE标准。但与VHDL相比,Verilog HDL有个最大的优点:它是一种非常容易掌握的硬件描述语言,只要有C语言的编程基础,一般经过2~3个月的认真学习和实际操作就能掌握这种设计技术。并且完成同一功能Verilog HDL的程序条数一般仅为VHDL的1/3。而VHDL设计技术则不很直观,需要有EDA编程基础,通常需要有多余半年的专业培训才能掌握这们技术。可见,用Verilog HDL语言有更高的优越性。
2 设计实例
通常设计数字电路大都采用自顶向下将系统按功能逐层分割的层次化设计方法,这比传统自下向上的EDA设计方法有更明显的优势(当时的主要设计文件是电路图)。因为由自顶向下的设计过程可以看出,从总体行为设计开始到最终逻辑综合,形成网络表为止。每一步都要进行仿真检查,这样有利于尽早发现系统设计中存在的问题,从而可以大大缩短系统硬件的设计周期。这也是HDL语言设计系统硬件的最突出的优点之一。并且在顶层设计中,要对内部各功能块的连接关系和对外的接口关系进行描述。而功能块实际的逻辑功能和具体的实现形式则由下一层模块来描述。在系统的底层设计中,由于其对系统很强的行为描述能力,可以不必使系统层层细化,从而避开具体的器件结构,从逻辑行为上直接对模块进行描述和设计,随后EDA设计软件或相应的第三方工具软件中的综合器将程序自动综合成为具体FPGA/CPLD等目标芯片的网表文件,这种避开具体器件结构的方式也是它的重要优势之一。
下面以序列检测器的设计为例具体说明。
序列检测器是时序数字电路中非常常见的设计之一。它的主要功能是:将一个指定的序列从数字码流中识别出来。接下来就以设计“01101”这个序列的检测器为例,说明Verilog HDL语言的具体应用。设X为数字码流输入,Z为检出标记输出,高电平表示“发现指定序列”,低电平表示“没有发现指定的序列”。设输入的码流为“001101101111011111...”,则其序列检测器的逻辑功能如表1所示。
在时钟2~6中,码流X里出现指定序列“01101”,对应输出Z在第6个时钟变为高电平“1”,表示发现指定序列“01101”,Z输出“1”。同理在第9个时钟对应输出Z也为“1”。根据这个逻辑功能描述,我们可以分析得出状态转换图(见图1)。
其中状态A~E表示5位序列“01101”按顺序正确地出现在码流中。因为输入码流X是随机的,因此可能会有很多重叠的情况发生。这样在转换图中相应的还要有状态F和G。设初始状态为IDLE,则有相应的Verilog HDL语言程序如下。
mole seqdet(x,z,clk,rst);
input x,clk,rst;
output z;
reg[2:0] state;
wire z;
parameter IDLE=3'd0,
A=3'd1,
B=3'd2,
C=3'd3,
D=3'd4,
E=3'd5,
F=3'd6,
G=3'd7;
assign z=(state==D && x==1)?1:0;
always@(posedge clk or negedge rst)
if(!rst)
begin
state<=IDLE;
end
else
casex(state)
IDLE:if(x==0)
state<=A;
else state<=IDLE;
A:if(x==1)
state<=B;
else state<=A;
B:if(x==1)
state<=C;
else state<=F;
C:if(x==0)
state<=D;
else state<=G;
D:if(x==1)
state<=E;
else state<=A;
E:if(x==1)
state<=C;
else state<=A;
F:if(x==0)
state<=A;
else state<=B;
G:if(x==0)
state<=F;
else state<=G;
default: state<=IDLE;
endcase
endmole
由上述这个程序可以看出:Verilog HDL程序是由模块构成的。每个模块的内容都是嵌在mole和endmole两个语句之间实现特定的功能的。每个模块都由两部分组成,一部分描述接口;另一部分描述逻辑功能,即定义输入是如何影响输出的。如程序中的sequdet(x,z,clk,rst)就是模块的端口,声明了模块的输入、输出口。接下来就是模块中最重要的部分逻辑功能的定义。在模块中产生逻辑,Verilog HDL语言有3种方法:
(1)用“assign”声明语句。这种方法很简单,只需写一个“assign”,后面再加一个方程式即可。这也是最常用的方法之一。如程序中的assign z==(state==D && x==1)?1:0;就表示状态为D时又收到了1,表明收到“01101”应使Z输出为高电平。
(2)用“always”块。它常被用来描述时序逻辑,上面的程序中即用这个模块完成了状态机的状态转化功能。
(3)采用实例元件的方法。这时只要键入元件的名字和相连的引脚即可。这样就可以用上面这不长的程序,完成这个对序列的检测功能,并且逻辑描述也十分容易理解。
上述程序输入完成后,接下来首先要经EDA设计软件进行编译。本设计采用的是美国ALTERA公司的MAX+PLUSII软件,经Compiler编译器编译,没有任何问题后。建网表、逻辑综合、适配、划分、时域分析、装配等均已自动完成,并生成多个后续工作要用的文件。编译成功表明已为所设计的项目建立了一个编程文件,但还不能说明该文件在各种情况下都有正确的响应,因此编译通过后还要进行功能和时序仿真,仿真结果如图2所示。
经仿真发现输出Z和输入X有一段延时。通过波形很难给出定量的信号延时关系,为此我们在进行定时分析。定时分析结果如图3所示,从表中显示出了“CLK”到“Z”的延迟路径为7.6ns、“X”到“Z”的延迟路径为6ns。这样,经Verilog HDL语言的文本编辑、编译、仿真波形编辑、仿真和定时分析一系列设计步骤,设计出符合要求的数字系统后就可以通过编程器下载到指定的芯片中去。
综上所述,则更能体会到Verilog HDL语言的优势:由于它在其门级描述的底层,也就是晶体管开关的描述方面比VHDL等各种其它的HDL语言有更强的功能。所以在复杂数字逻辑电路和系统的设计仿真时更有优势;描述的设计思想、电路结构和逻辑关系清晰明了,并且设计语言简练、易学易用;其模块化分层结构在大规模设计时更能体现出优势。因此可以看出,Verilog HDL语言在EDA设计中相对与其他的各种硬件描述语言更有优势。
3 结束语
随着集成电路规模的越来越大,数字系统设计的越来越复杂,Verilog HDL语言在硬件电路设计的优越性也会越来越显突出。目前,数百万门规模的FPGA/CPLD已进入实用,Verilog HDL强大的系统描述能力、规范的设计结构和简洁、灵活的编程风格会使其必将能会用来完成大数字系统、超大规模数字系统的几乎全部设计任务。