(生物医学工程专业论文)谱仪接口板和发送板的接口电路的fpga设计与实现.pdf_第1页
(生物医学工程专业论文)谱仪接口板和发送板的接口电路的fpga设计与实现.pdf_第2页
(生物医学工程专业论文)谱仪接口板和发送板的接口电路的fpga设计与实现.pdf_第3页
(生物医学工程专业论文)谱仪接口板和发送板的接口电路的fpga设计与实现.pdf_第4页
(生物医学工程专业论文)谱仪接口板和发送板的接口电路的fpga设计与实现.pdf_第5页
已阅读5页,还剩84页未读 继续免费阅读

(生物医学工程专业论文)谱仪接口板和发送板的接口电路的fpga设计与实现.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

东北大学硕士学位论文第二章a s i c 和f p g a 的设计方法和硬件描述语言 2 1 3f p g a f p g a 兼有可编程器件和门阵列两种设计模式的优点,f p g a 可以看成是门 阵列的一个分支,与普通的门阵列相比,f p g a 的布局布线可由用户现场完成, 并可反复编程使用。每个f p g a 生产商提供的器件的结构都不同,但都包含三部 分可编程逻辑块、互联矩阵和可编程i o 单元f 2 。 2 】4 设计中a s i c 和f p g a 的选择 设计实现时需要考虑各个因素,表2 1 对使用a s i c 和f p g a 实现方式的优 缺点做了比较。 表2 1 不同设计方式的优缺点比较表 t 曲1 e2 1 t h ea d v a n t a g ea n dd i s a d v a l l t a g eo f l l s i n ga s i co rf p g a 比较项标准单元门阵列f p g a 使用多资源的困难 高高 低 前端开发成本高中 低 掩模成本高 由 无 设计时间 由 长 短 一 再设计灵活性低 由 局 设计迭代高中 低 单个产品成本低中高 p c b 成本低 低高 布图效率与灵活性高中 低 i ,o 灵活性高 由 低 集成级别高 由 低 a s i c 需要在设计迭代和验证上需要花费较多的时间,前端设计成本一般较 高:而f p g a 设计在设计灵活性、开发成本以及开发时间方面占一定的优势。通 常在系统初期测试或产品需求量小时,采用f p g a 设计。 2 。2 设计方法 2 2 】自下而上的设计方法 自下面上的设计方法是集成电路设计的基本方法。其基本思想是将复杂的系 统逐层进行功能划分,直至用底层模块来描述。当完成底层模块描述后,自下而 上的进行层次扩展和层次功能的仿真验证,从而完成整个系统的功能设计和验证。 3 盂达自盈适运曲篮撞鳖控 瞪茎! :里亟盏亟亘篮鳗查廑区别 附录1 :口语与书面语的本质区别 我们在第二章第三节1 3 里已经提到:当我们将言语活动尤其是口语 交际的过程置于认知和元认知的视角下进行观察的话,话语结构的对话性 就凸现了出来。在第三章的第一节2 里,我们又进一步论证了:元认知监 控下的对话性是生成链接结构的直接源泉。 那么,链接结构对于自然语篇的话语结构具有怎样的意义? 这一意义 对于书面语和口语是否有所区别? 相关的问题也就是:口语与书面语的根 本差别从什么样的角度去剖析才是最本质的和最到位的呢? 我们从最典型的现场语篇即口语谈起。 1 口语话语结构的特征 1 1 口语特征的已有论述 从2 0 世纪7 0 年代开始,以h s a c k s 、e s c h e 9 1 0 f f 和g j e f f e r s o n 为代表的一批社会学家开始对会话结构进行了专门的系统研究,并形成了 逻辑一哲学、社会语言学和民族方法学等不同的话语分析的方法( 马博森, 2 0 0 1 ) 。他们都将会话视为一种相互合作、具有功能性的社会行为。正是这 样一种研究态势,使得有关讨论都较多地集中在口语的话语结构对人际意 义的表达上“他们的研究目的是要挖掘隐藏在会话后面的社会现象, 他们的学说背景使他们对语言系统或语言能力不感兴趣( 顾日国,1 9 9 9 ) ”。 直到9 0 年代末,语言学家才加入了话语结构的研究。“l e e c h 利用口语 语料库对现场即席话语作了研究后指出,现场即席话语有三个即席话语 原则:( 1 ) 要不停地说;( 2 ) 有限的准备;( 3 ) 修正先前说出来的话。与 这三个原则相关的语法现象使他不得不怀疑英语口语语法会跟英语书面语 法是同一种语法( 顾日国,1 9 9 9 ) ”。 回顾话语研究的上述历史,我们可以看到,一方面以往的研究较多强 调的是话语结构的社会功能;另一方面,入们也看到了口语与书面语有着 截然不同的话语结构。然而,造成上述两方面的原因却鲜有论及:比方说, 为什么口语的话语结构能体现出社会学的意义? 为什么即席话语会呈现出 上述的这样三条即席话语原则? 究其原因,恐怕是研究思路的不同。从口语生成的认知层面去探讨话 语结构的形成还比较少见,多数是就口语已经表现出来的形式特征进行归 纳并在此基础上进行语法分析1 ,比如说:口语句子比较短小、简略,结构 东北大学硕士学位论文第二章a s l c 和f p g a 的设计方法和硬件描述语言 但自下而上的设计方法作为传统的系统硬件设计方法,在系统设计早期就将 系统人为的分为硬件和软件两个部分,并分别进行硬件和软件设计,软件的丌发 受到硬件的严格限制p j 。 系统的硬件设计从选择具体的器件开始,用选中的器件进行系统的硬件设计, 完成系统各独立功能模块设计,然后再将各功能模块连接起来,完成硬件设计; 软件漫计和调试在硬件设计完成之后。这种设计方法的缺点是显然的,如要求设 计者具有丰富的经验,设计过程反复较多,开发效率低,可移植性差,可继承性 差,开发时间长,不易修改设计等等。 2 2 2 自顶向下的设计方法 自顶向下的设计方法是随着大规模专用集成电路的开发和研制以及商品化的 自动综合工具的出现而形成的层次化设计方法。在理想上,真正的自顶向下系统 级设计方法是,使用硬件描述语言在抽象级描述整个系统以及使用如分配器和综 合器等的自动工具。这也就意味着驱动抽象级描述到p c b 或m c m s ( m u l t i c h i d m o d u l e s ) 的实现,包括标准i c ,a s i c ,f p g a ,p l d 和全定制i c 。但是这个理 想并没有被完全实现,然而为了达到这个目标,e d a ( e e i e c t r o n i cd e s i g n a u t o m a t i o n ) 工具的能力不断的被提高。这也就意味着设诗者必须不断的接纳新 观点和学习新技能。设计者把更多的时间花在设计h d l 模型、考虑不同的结构和 考虑系统测试和可测性的问题。实际上,几乎没有时间放在门级设计上【4 】。 过去几年间技术的进步已经大大提高了a s i c 的门数。这也就提高了f p g a 和a s i c 的复杂度,产生了s o c ( s y s t e mo nc h i p ) 的概念。自顶向下的设计方法 是设计这种芯片的唯一可行方法。 硬件开发项目中a s i c 和f p g a 的设计通常是设计进度的关键。传统上,这 样的设计通常使用原理图输入工具画出电路的原理图,对于如p l d s 的小规模器 件,这是一种可行的设计方法。如果预算中有仿真和综合工具,使用h d l 语言的 自顶向下的设计方法是最好的应用设计方法。想象一下,如果使用原理图法来设 计l o o 万门的a s i c ;一个小的设计修改可能会导致花费大量时间进行原理图的修 改。使用硬件描述语言开发电子硬件的设计方法与使用高级语言( 如c 语言) 进 行软件开发项目类似。 在自顶向下的设计流程中,电子设计的各个层次如图2 1 示。它暗示出了综 合是这个流程中关键的一环。 d 东北大学硕士学位论文第二章a s l c 和f p g a 的设计方法和硬件描述语言 p c b i 【lp 2p c b 3 工 s y s t t 9 r o m r a m a s i c la 趣c 2 f p g a lj _ v i 甲s k 眦 r t l 级综台上 lr t l 级综合、lr n 强综合 未封裁 1 r 、 一 , l r 、一 a s l c 测试综合 一一 尉:日! 馐 皇1 卜; 一 c1 ll l 一 1 i r 删综厶 l _ 一 图2 1自顶向下设计方法的过程层次结构 f i g 2 1 h i e r a c h i c a lr e n n e m e n to f e l e c t r o i l i ch a r d w a r ei f la t o pd o 、1 1d e s i g ne n v i r o 咖e n t 5 东北大学硕士学位论文第二章a s i c 和f p g a 的设计方法和硬件描述语言 应用仿真和r t l 级综合的典型a s i c 设计流程如图2 4 。相同的测试向量用 来验证r t l 模型和综合后网表级的模型。网表级与门级致,但可能包含较大的 宏单元吼 自顶而下的设计方法便于从系统级划分和管理整个项目,简化了设计队伍的 管理,减少了不必要的重复,并提高了设计的一次成功率。同时,还可以提供整 个设计过程中各设计阶段的统一规范管理,包括系统的测试和各层次的模拟验证。 另外,自顶而下的设计方法更符合人们的设计思维习惯,可以大大提高开发效率、 可继承性以及缩短开发时间,所以得到了广泛的应用。 图2 4 使用仿真和r t l 级综合的典型a s i c ,f p g a 设计流程 f 皓2 4聊i c a la s i c f p g ad e s i g i ln o wu s i n gs 砷u l a t i o n 锄dr t l1 e v e ls y n m e s i s 2 3 硬件描述语言 2 3 1 简介 硬件描述语言是用来对硬件电路的功能操作进行建模的软件编程语言。h d l 7 学位论文独创性声明 本人所呈交的学位论文是我在导师的指导下进行的研究工作及 取得的研究成果。据我所知,除文中已经注明引用的内容外,本论文 不包含其他个人已经发表或撰写过的研究成果对本文的研究做出重 要贡献的个人和集体,均已在文中作了明确说明并表示谢意。 作者签名:乞垒竺奎日期:全q q 墨生! j 旦 学位论文授权使用声明 本人完全了解华东师范大学有关保留、使用学位论文的规定,学 校有权保留学位论文并向国家主管部门或其指定机构送交论文的电 子版和纸质版。有权将学位论文用于非赢利目的的少量复制并允许论 文进入学校图书馆被查阅。有权将学位论文的内容编入有关数据库进 行检索。有权将学位论文的标题和摘要汇编出版。保密的学位论文在 口 解密后适用本规定 学位论文作者签名:夕睾荡 东北大学硕士学位论文第二章a s i c 和f p g a 的设计方法和硬件描述语言 语言促进了硬件描述的两个方面:真正的抽象行为建模和硬件结构建模。 抽象行为建模:为了便于特定目的的硬件行为的抽象描述,硬件描述语言是 便于描述的,这种行为不会被硬件电路的结构所排斥。 硬件结构建模:不管设计行为如何,硬件描述语言都能够对硬件结构进行建 模。 硬件行为可以被建模来描述设计过程中抽象的各个级别。高级别的模型抽象 地描述了硬件电路的操作,而低级别的模型包含更多的细节,如综合出的硬件电 路结构。 2 3 2v h d l 和v e r i l o gh d l 大约有数十种硬件描述语言,如v h d l 、v e r i i o gh d l 、s u p e r l o 卧s y s t e m v e r i i o g 和s y s t e m c 等等,目前应用较广的是v h d l 和v e r i l o gh d l 两种硬件描述语言。 2 3 2 1v h d l 的历史 ( 1 ) 1 9 8 0 年美国指定v h s i c ( v e r yh i g l ls p e e dh l t e 伊a t e dc 矾u i t s ) 计划; ( 2 ) 1 9 8 0 年i b m 、t i 和i n t e m e t r i c s 联合开发语言和仿真工具( v h d l ) 主 要考虑自顶向下的设计和工艺进步一起的系统升级; ( 3 ) 1 9 8 7 年美国国防部( d o d ) 要求所有数字电路用v h d l 描述,并决定 f 一2 2 战斗机项目采用v h d l ,发布i e e e l 0 7 6 1 9 8 7 ; ( 4 ) 1 9 9 3 年发布i e e e l 0 7 6 1 9 9 3 ; ( 5 ) 1 9 9 6 年基于i e e e l 0 7 6 1 9 9 3 的仿真和综合工具问世;i e e e l 0 7 6 3 使用 综合工具的程序包标准;i e e e l 0 7 6 4 ( v i t a l ) :a s i c 和f p g a 建库; ( 6 ) 1 9 9 7 年发布i e e e l 0 7 6 1 即同时能够描述数字和模拟集成电路的v h d l 语言标准( v h d l a m s ) 。 2 3 2 2v e 删o g 的历史 ( 1 ) 1 9 8 1 年g a t e w a ya u t o m 鲥。玎硬件描述语言公司成立; ( 2 ) 1 9 8 3 年该公司发布“v e r i l o g 皿l ”及其仿真器; ( 3 ) 1 9 8 5 年推出改进产品v e d l o gh d l x l ; ( 4 ) 1 9 8 3 1 9 8 年v 甜l o gh d l 可以描述硬件和测试激励的行为结构 v e m o g x l 较快,特别在门级,并能处理万门以上的设计。v e r i l o g x 仿真器是解释型的,便于设计者交互地调试硬件描述; ( 5 ) 1 9 8 7 年s y n o p s y s 公司开始使用v e r i l o g 行为语言作为它综合工具的输入; ( 6 ) 1 9 8 9 年】2 月c a d e n c e 公司并购了g a t e w a y 公司; ( 7 ) 1 9 9 0 年初c a d e n c e 公司把v e r i l o g h d l 和v e m o g x l 分成单独产品, - 8 东北大学硕士学位论文第二章a s i c 和f p g a 的设计方法和硬件描述语言 发布了v e r i l o gh d l ,与v h d l 竞争:0 p e nv e r i l o gi m e r a t i o n a l ( 0 v i ) 成立,o v i 由v e r i l o gh d l 的使用者和c a e 供应商组成,制定标准; ( 8 ) 1 9 9 3 年几乎所有a s i c 厂商支持v e r i l o g h d l ,认为v e r i l o g x l 是最好的 仿真器;0 v i 推出2 o 版本的v e r i l o gh d l 规范,i e e e 接收将o v i 的 v e r i l 0 9 2 o 作为i e e e 标准的提案; ( 9 ) 1 9 9 5 年1 2 月,定出v e m o gh d l 的标准i e e e1 3 6 4 【6 i ; ( 1 0 ) 2 0 0 0 年9 月,发布i e e e1 3 6 4 2 0 0 1 标准,对先前的v e r i l o g 标准做了 改进。 2 3 2 3v 砌) l 和v e r i l o g 的比较 下面的每一项比较和对比了两种语言的一个方面。 ( 1 ) 建模能力 无论是v h d l 还是v 耐l o g ,硬件结构都可以同等同效率的建模。当建模抽 象硬件时,v h d l 的某些能力,v e r i l o g 只能通过p l i ( p r o 鲜珊m i n gl 肌g u a g e i n t e r f i l c e ) 才能达到,而v 硎l o g 物理建模能力强,v h d l 不能进行版图级建模。 如图2 5 显示了v i d l 和v e r i l o g 的建模构成部分覆盖了行为抽象的不同段。 图2 5 玎) l 建模能力 f 嘻2 5h d lm o d e l i n gc 叩曲i l i t y ( 2 ) 编译 v h d l ,位于同一系统文件的多设计单元( 实体一结构体对) ,可以被分别 编译。然而,把每一个设计单元放在它自己的系统文件中是一个好的设计原则。 v e r i l o g ,仍然坚持其本来的解释模式。编译是加快仿真的方式,并不改变语 0 东北大学硕士学位论文 第二章a s i c 和f p g a 的设计方法和硬件描述语言 言的原始特征。因此,必须注意单个文件中的代码编译顺序和多个文件的编译顺 审。简单的改变编译顺序可以改变仿真的结果。 ( 3 ) 数据类型 v h d l ,拥有大量的数据类型,并可使用用户定义的类型。是一种数据类型 性极强的语言,这也就意味着需要专门的转换函数把对象从一种数据类型转换成 另一种数据类型。数据类型的选择使用应该谨慎的考虑,特别是枚举类型( 抽象) , 这将会使建模易写、易读,避免不必要的转换函数,易于错误的检查【”。 v e r i l o g ,与v h d l 相比,v e r n o g 数据类型很简单,易于使用,适合进行硬 件结构建模,不适于抽象的硬件建模。不像v h d l ,在v e r i l o g 模型中使用的所 有数据类型必须是v e r i l o g 语言中定义的,用户不能定义数据类型。 ( 4 ) 设计复用 v h d l ,过程和函数可以放置在包中,使任何设计单元可以使用他们。 v e r i l o g ,在v e r i l o g 中没有包的概念。模型中使用的函数必须在使用它的 m o d u l e 的声明中定义。为了使函数可以被不同的m o d u l e 调用,他们必须被放置 在单独的系统文件中,并要使用“i n c l u d e ”编译命令。 ( 5 ) 易学性 由于v e r i i o g 为直接仿真语言,数据类型简单,语法直观,如果没有任何语言 的基础,v e r i l o g 是最容易掌握和理解的,假设v e r i l o g 的仿真编译命令语言和p l i 语言不包括在内。如果这些语言包含在内,他们可以看作两种另外的语言来学习。 v h d l 看起来不易学有两个原因。第一,严格众多的数据类型,欠直观,但 对深入学习后的高级用户而言,这个特征使它健壮和强大。第二。同一电路可以 用多种方式进行建模,尤其是那些据有较多层析结构的电路,通常需要定的时 问和经验才能完成高效的设计。 ( 6 ) 前向标注和后向标注 v e r n o g 的一个副产品是s d f ( s t a n d a r dd e l a yf 0 工i n a t ) 。这是一个在电路中定 义时序延迟的通用格式。这种格式在芯片版图工具、综合器和仿真工具之间提供 了双向的连接,以提供更精确的时序描述。现在,s d f 格式是一种业界标准。【8 】 ( 7 ) 高层结构 v h d l ,v ) l 比v e r i l o g 拥有更多的适于高层次建模的结构和特征。抽象数 据类型可以和下列声明一起使用:建模复用的包声明,为配置不同设计结构的配 置声明,重复结构的生成语句,拥有独立特征的类属参数模型的类属参数声明。 所有这些声明在可综合的模型中是有用的。 v e r i l o g ,除了能够通过重载参数常量参数化模型外,在v 甜1 0 9 中没有与 v h d l 相同功能的高级建模声明语句。 ( 8 ) 语言的可扩展性 1 0 东北大学硕士学位论文第二章a s i c 和f p g a 的设计方法和硬件描述语言 语言的扩展会使模型不标准,然而有时为了获得期望的结果是必要的。 v h d l ,有一种属性“f o r e i g n ”,它允许结构体和子程序用其他语言进行建 模。利用语言的可扩张性当不希望被别的工具移植时,可以使模型非标准化,当 希望移植时,也可通用化。 v e r n o g ,p l i 是种v 嘶i o g 模型和v e r i i o g 软件工具之间的接口机制。设计 者和v e r 订o g 工具供应商可以规定用户用c 语言设计t a s k 或如n c t i o n ,然后从v e l o g 源描述调用他们。这样的任务和函数使v e r i l o g 模型不标准,可能不能被其他的 v e r i l o g 软件工具使用,不推荐这种用法【9 j 。 ( 9 ) 库文件 v h d l ,库在设计中占有重要的地位,对于编译的实体、结构体、包和配置, 库文件是公共存储区域,处理多设计工程是有用的。库时v h d l 的特色。 v e r i l o g ,在v e r i l o g 中,由于其源于解释性语言,没有库的概念。 ( 1 0 ) 低级结构 v h d l ,简单的两输入逻辑运算符嵌在语言中:n o t 、心、o r 、n a n d 、 n o r 、x o r 和x n o r 。任何时序必须使用a f t e r 语句指定。在i e e e1 0 7 6 4 ( v i t a l ) 中定义了a s i c 和f p g a 库的单个单元结构,这对于底层的结构描述很方便。 v e r i l o g ,对于门级建模和a s i c 单元原型及f p g a 的库建模,v e r i l o g 有很好 的结构。例如,用户定义原语( u d p ) 、真值表和规定时序延时的模块。 ( 1 1 ) 处理大型设计的能力 v h d l ,配置语句、生成语句和包,加上类属语句都是有利于大型设计的结 构。 v 谢l o g ,没有利于处理大型设计的语句。 ( 1 2 ) 运算符 两种语言大部分的运算符是相同的。v e r i l o g 有非常有用的一元缩减运算符, 而v 阳) l 没有。l o o p 语句可以用来完成v e r i l o g 中的一元运算符的操作。v h d l 中有m o d 运算符,v e m o g 中没有。 ( 1 3 ) 可参数化模型 v h d l ,用类属语句可以把一个类属的n 位模型例化为明确位宽的模型。类 属模型不能被综合直至例化后给定类属值。 v 嘶l o g ,用重载参数值可以把一个类属的n 位模型例化为明确位宽的模型。 类属模型必须有己定义的缺省参数。这就意味着,没有指定重载值,它仍然可以 用缺省参数被综合。 ( 1 4 ) 过程和任务 d l 中有并行过程调用,而v e r i l o g 中不允许并行任务调用。 ( 1 5 ) 可读性 东北大学硕士学位论文第二章a s i c 和_ f p g a 的设计方法和硬件描述语言 这更多的是编码风格和经验的问题而不是语言特征的问题。 v h d l 是一种简练而详细的语言;它源于a d a 语言,有时简洁,有时冗繁。 v e m o g 更像c 语言因为它的结构一半源于c 语言,一半源于a d a 语言。所 以c 语言编程者更喜欢v e r i l o g 。不管使用哪种 d l 语言,当读写要综合瑚) l 模型时,脑中想着硬件电路是非常重要的。 ( 1 6 ) 结构性重复 v h d l ,生成语句可以复制许多相同设计单元或设计子部分的例子,然后适 当的连接它们。 v e r i l o g ,在v e r i l o g 中,没有同类的语句。 ( 1 7 ) 测试平台 通常,设计者把5 0 的对间花在写可综合的模型上,其余的5 0 的时间花在 写测试平台来验证可综合的代码。测试平台并不局限于可综合的子集,可蛆自由 使用语言的所有资源。v h d l 中的类属和配置语句在测试平台中是非常有用的, v e r 订o g 中没有。 ( 1 8 ) 效率 v h d l ,由于v h d l 类型定义非常严格,编写模型代码时,数据类型必须准 确匹配。这既是优点也是缺点。然而,这也意味着,与v e r i l o g 相比模型更详细, 代码更长,较v e r i l o g 效率低。 v e r i l o g ,代表不同位宽对象的信号可以相互赋值。位宽短的信号可以自动填 补长度,不管它是不是被赋值的信号。在综合的过程中,不用的位可以被自动优 化掉。这些特点是指简洁,效率高。不用像d l 那样明确的建模,这是一个优 点。但是,可能有意想不到的错误不能被分析器发现f l ”。 通过以上比较,我们可以了解到v h d l 和v 耐l o g 两种语言各自的特点和有 缺点,对于我们在设计中是选择v 印) l 还是v e r i l o g ,不仅是基于技术能力的原 因,还要考虑到个人喜好、e d a 工具和商业市场因素等等。由于本人更熟悉v h d l 语言,所以以下的介绍以v 卸) l 为主。 2 3 3 瑚) l 对综合的支持 硬件描述语言的某些部分可能被综合工具忽略,也可能不支持。原因是这些 部分没有直接的对应硬件,或硬件目标过于抽象。例如,当时序应该来自于工艺 库单元时,与时序相关的部分被忽略。不被综合工具支持的部分如浮点算术运算 符,没有静态范围值的循环结构和文件处理的相关部分。哪一部分被支持哪一部 分不被支持并没有标准,不同的综合工具支持的可综合的子集也不同。需要指出 的是,尽管不同综合工具支持的可综合子集不同,但这不是选择使用哪个综合工 具的决定性因素。编写独立于任何综合工具的代码是好的设计原则。 1 2 东北大学硕士学位论文第三章综合和设计注意事项及技巧 第三章综合和设计注意事项及技巧 3 1 综合介绍 集成电路设计过程中设计描述的种形式向另一种形式的自动转换和优 化的过程,一般通过综合器进行。综合有逻辑综合和行为综合之分,这里我 们主要讨论逻辑综合,即r t l 级综合。虽然s y n o p s y s 等公司一直致力于行为 综合( 即高层综合) 方面的研究,并且对特定应用,行为综合也取得了一些 进展,但离实际应用还有一定距离。 综合的特点: ( 1 ) 综合是在一定的驱动限制条件之下进行; ( 2 ) 综合器是独立于具体设计工艺的; ( 3 ) 综合器很难得到硬件设计的所有实现方案,也不可能得到最优的方 法: ( 4 ) 不同的综合器对相同的h d l 描述可能得到不同的结果: ( 5 ) 对h d l 的支持程度依赖于综合器。 3 2r t l 级综合 3 2 1r t l 级描述 规定设计中采用各种寄存器形式并在寄存器之间插入组合逻辑,寄存器或 者公开地通过元件具体装配,或者通过演绎作隐含的描述,寄存器通过时钟 信号连接的矩形符号对象表示。组合逻辑或者由逻辑方程、顺序控制语句 ( c a s e 、i ft h e ne l s e 等) 和子程序描述,或者通过并行语句由寄存器之 间的云图文件来表示【12 1 。 出 图3 1r t l 级描述的结构 f i g 3 1 t h ea r c h t e c t l i r eu s i n gr t ld e s c r i p t i o n 1 3 东北大学硕士学位论文第三章综合和设计注意事项及技巧 3 2 2r t l 级综合的定义 寄存器传输级( r t l 级) 综合就是把用硬件描述语言在寄存器传输级描 述的寄存器传输级硬件模型转换到优化了的、对应特定工艺的门级实现。如 图3 2 寄存器传输级综合工具将a s i c 和f p g a 设计过程的这一部分变为自动 操作,是自顶向下设计方法的关键环节。综合是设计生成电路的最快最有效 的方式。 图3 2 综合等于转换和优化 f i g 3 2s y n t h e s i se q u a l st r a n s l a t i o na n do p t j m i z a t i o n 3 2 _ 3 综合的过程 使用综合工具的典型综合流程如下图3 3 。图中显示了不经优化的最初的 1 4 东北大学硕士学位论支 第三章综合和设计注意事项及技巧 一l i fr i s i g e d g e ( c l o c k ) t h e d i f ( s _ 1 0 ) t h 帆 l ( = a _ b : m ( _ l + l : n ( 吐- c : e l s e n ( _ a 斗c : 自n d i f : e n di f : v 盯i 1 0 9 a 】w se ( p o s e d g ec l o c k ) i f ( s = 盯) k 十b : 毕l + l : 件: 一c : e 1 跚 n = 十c : 图3 5 高层结构的c d f g 描述 f i g 3 5c o n t r o l - d a t a n o w - g r a p hr e p r e s e n t a t i o no f h i g h1 e v e is t r u c t u r e 3 2 5 逻辑级的优化 一旦综合将设计转换到逻辑级,那么所有的寄存器元素就固定了,仅仅 对组合逻辑做优化。 在这一级的优化包含根据布尔逻辑规则重构布尔方程式。因此,组合逻辑 的优化是建立在比r t l 级更细粒度的基础之上的。布尔优化的类型包括:最 小化,方程式展平,方程式提取公因数和优化。实行这些操作的综合算法是 建立在多级( 方程式) 和多输出的基础上的。算法是多维的,比使用卡诺图 优化单输出的单个方程的过程要复杂的多。逻辑级优化的例子如图、3 6 示。 1 7 东北大学硕士学位论文 第三章综合和设计注意事项及技巧 图3 6 布尔方程式的逻辑级优化 f i g 3 6e x 锄p l eo f t h e1 0 9 i cl e v e lo p t i m i z a t i o no f b o o l e a ne q u a t i o n s 展平:将复合的布尔方程式转换成只有两级( a n d 平面级和o r 平面级) 的信号表示方式称为展平。所有的中间项都被去掉,只含有两级逻辑门,一 个与平面和一个或平面。这种设计方法的工作速度非常快,实现也较容易, 但用这类设计会带来很多问题。 首先,由于输入信号可能有非常大的输出负载,因此设计时可能会比有 中间变量的多逻辑级的设计更慢。其次,由于输入扇出接到每种变量项,会 使设计做的非常大,并且在各项之间不存在共享项,每个项都必须算它自己 的功能。另外,也存在大量很难展平的电路。 提取公因数:与展平的过程正好相反,提取布尔方程式的公因数就是添 加附加中间项的过程。提取公因数添加隐含的逻辑结构,以减少隐含电路的 数量和大的扇出。提取公因数通常将产生一个“更好些”的设计,但也可能 是一个相互依赖的设计。附加结构将在输入与输出之间增加逻辑级数,增加 逻辑级数又会增加延时,得到的净结果是设计变得更小且是较慢的设计i l “。 3 2 6 门级优化 将设计转换到门级后,从目标工艺库单元中取出面积和时序信息以进行单 元原语的细粒度的局部优化。网表是对用户所需面积和速度目标的体现,有 大量的网表,它们在功能上相同但在速度和面积上都在一个很宽的范围上可 变。门级优化就是搜索包含一些单元逻辑的网表,然后用更好的符合约束的 工艺库的其他单元替代他们的过程。 1 8 东北大学硕士学位论文 第三章综合和设计注意事项及技巧 3 3 设计注意事项和技巧 为了设计出结构良好、效率高的模型,利于综合和仿真,在这一章将介 绍设计者设计中应注意的问题和一些处理技巧以及两个特殊的时序电路。 3 _ 3 i 设计前注意事项 ( 1 ) 采用自顶向下的设计方法和自下而上的优化策略: ( 2 ) 在写h d l 代码之前,根据输入、输出、时序和功能,尽可能写出与 实际相符的规格说明。我们经常根据错误的理解设计出“正确”的 电路,却与实际不符; ( 3 ) 尽量采用全局时钟和全局复位信号; ( 4 ) 在整个系统设计的早期就要考虑测试问题; ( 5 ) 在写r t l 级代码之前,规划出一个健壮的系统结构和功能化分; ( 6 ) h d l 代码要反映出设计的结构划分,以便让综合工具进行有效的逻 辑优化。 3 3 2h d l 设计注意事项 ( 1 ) 在写h d l 代码时以下两点要牢记心中:目标硬件结构和综合建模风 格及相关的限制; ( 2 ) 尽量使用子程序,代码复用,使程序简洁易读; ( 3 ) 使用抽象数据类型,使模型易读和维护,在v h d l 中使用枚举类型; ( 4 ) 纯组合逻辑建模时,必须保证条件赋值语句的每一个条件分支中,信 号都被赋值; ( 5 ) c a s e 语句中,必须有o t h e r s 项,以免综合出锁存器; ( 6 ) c a s e 语句要优先于包含e l s e i f 的i f 语句; ( 7 ) 不要使用没有边界限制的i n t e g e r 数据类型。在i e e e l 0 7 6 9 3 中,默 认为最大范围值,3 2 位。在优化附加逻辑时给了综合器更多的工作; ( 8 ) 在表达式中使用括号以划分更小的结构块; ( 9 ) 在f o 卜l o o p 语句中尽量只使用变量赋值; ( 1 0 ) 不要使用w a i t 语句来让综合器推断出寄存器。i f 语句可以完成w a i t 语句的所有工作,而且使用i f 语句还有一个优点:在同一个进程中, 可以有纯的组合逻辑和单独的时序逻辑存在。 3 3 3 信号和变量赋值 在v h d l 中有4 中数据类型:信号、变量、常量和文件,其中信号、变 1 9 东北大学硕士学位论文 第三章综合和设计注意事项及技巧 i f ( r i s i n g e d g e ( c l o c k ) ) t h e n m 4 = a 4a n db 4a f t e r3n s : y 4 = m 4o r c 4a 矗e r1n s : e n d i f i e n dp r o c e s ss j g n a l s y n c h ; f i 9 3 】0 t h es y n t h e s l z e dc i f c u l to f 。s e q u e n t l a l l o g l cu s l n gs l g n a ia s s l g n m e n t 由于a f t e r 语句不能被综合,会被综合器忽略掉,所以只从综合方面来讨 论,比较图3 7 和图3 8 我们可以看出对于组合逻辑而言,信号赋值和变量赋 值的作用是相同的,m 1 和m 2 都被综合成了一根内部连线。当然,对于仿真 而言,两者是不同的。比较图3 9 和图3 1 0 ,m 3 被综合成了一根内部连线, 而m 4 却被综合成了寄存器:从图3 9 和图3 1 0 我们还可以看出,进程中每一 次的信号赋值都会综合出一个寄存器。从图3 7 和图3 9 的比较以及图3 8 和 图3 1 0 的比较也可以看出这一点。 信号赋值和变量赋值的区别是v h d l 中非常基础且非常重要的部分,它 们的区别一定要牢记心中。 3 4 两个典型电路的设计 以下介绍数字系统设计中经常用到的两个典型电路( 有限状态机和线性反 馈移位寄存器) 的设计。 3 4 1 有限状态机 3 4 1 1 介绍 有艰状态机( f s m ) 是硬件设计的重要组成部分。f s m 被证明是时序电 路建模的有效方式。f s m 是在预先规定的次序方式下通过特定的状态模式安 排顺序执行的电路。结构如下图3 1 1 示。 2 2 - 东北大学硕士学位论文第三聿综合和设计注意事项及技巧 语句中的o t h e r s ( v h d l ) 和d e f a u l t ( v e r i l o g ) 可以避免明确定义所有的2 ” 个状态,其中一部分并没有被使用。 ( 2 ) 复位和无用状态 根据应用情况,复位信号可能没有,可能有同步复位也可能有异步复位, 也可能两者都有。为了保证安全行为,按照复位的类型,下面两者之一必须 保证: 异步复位:在第一个有效时钟跳变和正常的操作开始之前,保证状j 蠡机仞 始化为已知的有效状态。这不需要无用状态进行解码,简化了次态逻辑。 同步复位或没有复位:由于没有异步复位,因此没有办法在“上电”预先 设置状态寄存器值,可能在上电时永久进入一个无用的状态,因此所有的2 ” 个二迸制状态值必须在次态逻辑中译码,不管状态是不是状态机的组成部门。 在v h d l 中,异步复位只能用i f 语句进行建模,而同步复位可用w a i t 和 i f 语句建模;使用w a i t 建模的缺点是整个p r o c e s s 都是同步的,因此其他的i f 语句不能进行纯粹的组合逻辑建模。v e r i l o g 中,只能用i f 语句建模 1 5 】。 ( 3 ) 状态编码 二进制数值赋值给状态的方式,称为状态编码。经常用到的编码方式有: s e q u e n t i a l 码、约翰逊码、一位有效码、设计者自己定义的编码、综合工具定 义的编码。它们的描述如下; ( a ) 组合码:每个状态简单的赋值为增加的二进制数值。 ( b ) 格雷码和约翰逊码:若使用格雷码和约翰逊码做状态编码,每一个 状态被赋值为连续的二进制编码,特点是从一个数值变为下一个时 仅仅有一位发生变化。使用这种编码的最基本的目的是减小在触发 器的建立时间内由异步输入引起的状态转换错误的可能性。 ( c ) 一位有效码:在一位有效状态编码中,每个状态赋值给自己的触发 器,所以n 个状态就需要n 个触发器,在任一时间仅有个触发器 在它的有效状态。 ( d ) 设计者定义的编码:根据特殊的设计需要,状态赋值为一系列设计 者自己定义的编码。 ( e ) 综合工具定义的编码:为了减小次态逻辑,综合工具可以选择以上 的编码,实际的赋值要依据具体的设计而定。 ( 4 ) m e a l v 或m o o r e 类型 x 东北大学硕士学位论文 第三章综合和设计注意事项及技巧 设计而定。 ( 5 ) 交互式状态机 如果状态机的状态或输出信号影响了另一个状态机的操作,那么它们就 是交互的。状态机之间的相互作用可能是单向的或双向的。 图3 ,】4 单向控制的状态机妁结构图 f i g 3 1 4 s t r u c t u r eo f t w of s m sw i 血u n i d i r e c t i o n a l i m e r a c t i o n 图3 】5 双向控制的状态机的结构图 f i g 3 1 5 s t r u c t u r eo f t l l r e eb i d i r e c t i o n a li n t e r a c t i v ef s m s 单向:状态机可以是分级结构,这样做的好处是可以把复杂的控制通道分 2 6 东北大学硕士学位论文第三章综合和设计注意事项及技巧 成易处理的块。图3 1 4 显示了状态机l 单向控制状态机2 的结构,也就是状 态机2 的次态逻辑是状态机2 的输入、状态机2 的现状态和状态机l 的现状 态的函数。 双向:当需要握手协议时可利用两个相互控制的状态机,图3 15 显示了 每一个状态机与另两个双向控制的三个状态机。 3 4 2 线性反馈移位寄存器 线性移位反馈寄存器是带有组合反馈逻辑的时序移位寄存器,它可以实现 一系列伪随机二进制数据的周期循环。使用线性移位寄存器建模比不使用线 性移位寄存器在速度和面积方面都有优势,不幸的是,这些优点经常被设计 者忽视了。线性移位寄存器的典型应用包括:计数器、随机数产生器、数据 加密和解密、数据一致性校验和数据压缩技术。 线性移位反馈寄存器的反馈来自于寄存器链上选择的点,然后x o r i n g 或 x n o r i n g 这些点反馈回寄存器,反馈使寄存器循环输出一系列的伪随机值。反 馈点位置的选择取决于在给定的序列里有多少个谯,某些反馈点的选择服从 最大序列长度( 2 “一1 ) 的设置。如果设计需要所有的2 “个序列值,电路需要 稍做改动( 将会在下面做论述) 。如果应用需要少于等于2 “一1 个值,在j 二电 和运行时,线性反馈移位寄存器必须防止寄存器输出禁止值( 将会在f 面做 论述) 。 3 4 2 1x o r 和x n o r 反馈门 反馈路径可以全由x o r 门构成,也可全由x n o r 门构成,这两种电路是可 以互换的。若给定特定的反馈点设置,线性反馈移位寄存器就会循环输出一 系列随机值,不同的是两种电路输出,虽然循环序列的长度相同,但序列里 的值是不同的。图3 1 6 为用x o r 门配置的l f s r ,可用x n o r 门替换。 2 7 东北大学硕士学位论文第三幸综合和设计注意事项及技巧 图3 1 6o n e t o m a n y 和m a n y t o o n e 结构的8 位线性反馈移位寄存器 f 睡3 1 6 8 - b i tl f s rw i t hao n e - t o m a n yo rm a n y - t o o n ef e e d b a c ks t r u c t u r e 3 4 2 2o n e t o m a n y 或m a n y t o - 仰e 反馈结构 由x o r 或x n o r 门的构成的o n e t o ,m a n y 和m a n y t o o n e 反馈结构实现时使 用的逻辑门数相同( 如上图3 1 6 ) 。因为o n e t o m a n y 结构仅通过一个两输入 的x o r ( 或x n o r ) 门,相对于m a l l y t o o n e 的树型的x o r ( 或x n o r ) 门结构而 言,o n e t o m 姐y 拥有较小的最坏情况的c l o c k _ t o c l o c k 路径延时。 反馈点位置的选择取决于在给定的序列里有多少个值。对于给定长度的 l f s r ,有多种反馈点的组合可以实现最大长度的循环。例如,1 0 位的l f s r 有两种两个反馈点的组合可以得到最大的循环长度,分别是【2 ,9 】和 6 ,9 】; 有2 0 种4 点的组合;1 0 种8 点组合。当然,反馈点的选择不同得到的循环序 列不同。图3 1 7 示了2 位到3 2 位之间的l f s r 为得到最大循环长度的反馈点 的选择。 2 8 东北大学硕士学位论文第三章综合和设计注意事项及技巧 ( 2 ) 提供一种方式来载入最初的种子给寄存器,并行、串行均可。 ( 3 ) 加入附加电路使所有2 ”个值全都包含在循环序列内( 如下论述) 3 4 2 4 确保所有2 “个值全都包含在循环序

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论