




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数字集成电路设计工具及使用 数字集成电路设计分为前端设计和后端设计两部分,前端设计指综合及综合之前的相关设计步骤,而后端设计指综合之后直到Tape out的相关步骤。 典型的前端设计流程如下图所示:前端设计 数字IC设计流程后端设计设计输入:以电路图或HDL语言的形式形成电路文件;输入的文件经过编译后,可以形成对电路逻辑模型的标准描述;逻辑仿真(功能仿真):对如上形成的逻辑描述加入输入测试信号,检查输出信号是否满足设计要求;在此没有考虑任何时间关系,只是检测逻辑是否有错;数字集成电路的设计流程系统分割(设计综合):采用特定的设计方法分解实现电路模型,得到电路实际采用的逻辑单元及其相互连接形式;
2、在GA设计时,电路会分割为2-3输入的逻辑单元,在FPGA设计中,分割为4输入逻辑单元,而采用CPLD设计时,则分割为更大的逻辑单元。数字集成电路的设计流程前仿真:采用综合出的电路结构,对每个逻辑单元添加上对应的时间延迟信息;在此基础上进行仿真,检测电路是否存在逻辑或时序错误;电路的布局,定位与布线:对于通过前仿真的电路系统,从全局到局部,进行每个单元的定位以及相关的连线安排;数字集成电路的设计流程电路参数提取:根据连线的具体长度和负载程度,提取每一根连线的电阻/电容参数,得到相应的时间延迟信息;后仿真:将提取的连线参数代入到电路中,在此基础上进行仿真,检测电路是否存在逻辑或时序错误;数字集成
3、电路的设计流程在逻辑设计阶段,针对设计的输入编辑、仿真和综合过程,需要使用必要的软件工具进行支持;这种设计工具主要可以分为两类: 一类是由PLD的制造商推出的针对特定器件的设计工具;另一类是由专业软件公司推出的针对特定用途的设计工具。数字集成电路的设计工具由PLD的制造商推出,例如Altera公司的Maxplus II,Quartus II,Xilinx公司的ISE等。这类工具的优点是从设计输入直到器件下载,设计的全过程都能在一个工具中实现,使用非常简单方便;缺点是该类工具以器件综合为目标,对于不能实现直接综合的电路的行为设计不能支持。针对特定器件的设计工具由专业的工具设计者推出,例如Synp
4、licity公司的综合工具Synplify, Model Technology公司的仿真工具ModelSim等。这类工具通常专业性比较强,包容性好,可以最大限度地兼容HDL语言的各种描述,适应从抽象到具体的各种设计方式。缺点是其专用性比较强,使用的简便性不及第一类。针对特定用途的设计工具仿真工具ModelSim综合工具Synplify 设计工具Maxplus II,Quartus 关于设计工具的简单介绍电路仿真的要点使用输入向量对电路模型进行测试;仿真失败表明该模型存在错误(不能工作);仿真成功不能证明该模型正确!仿真可以从高级别到低级别分为很多层次,高级别比较抽象,低级别比较详细。行为仿真(
5、功能仿真)对于行为模型进行仿真:根据输入的变化或指定的时间,开始一个仿真循环,执行所有进程;每个进程启动执行到其中止为止;模型中的有效信号更新时,会产生一个事件;如果在本仿真循环中有信号产生了事件,则仿真将重新执行一遍;仿真循环的执行时间为delta时间。结构仿真(前仿真)对于电路逻辑结构模型进行仿真:结构仿真可以根据使用器件的情况,为不同的元件添加不同的延迟时间,所以能够在一定程度上反映出电路的时间性能,并分析影响电路速度的关键因素,便于对电路进行修改。电路仿真(后仿真)对于布局布线后的电路模型进行仿真:电路仿真可以根据器件的布局和连接情况,通过从电路中提取连线物理参数,估算出连线延迟,从而
6、为电路中信号的传递附加传输延迟,能够更准确地反映出电路的时间性能,便于进行电路的时序设计修改。数字电路设计与Verilog 硬件描述HDL(Hardware Description Language)语言,是一种用形式化方法来描述数字电路和系统的语言。HDL语言既包含一些高层程序设计语言的结构形式,同时也兼顾描述硬件线路连接的具体构件。通过使用结构级或行为级描述可以在不同的抽象层次描述设计,主要包括三个领域五个抽象层次。 HDL语言是并发的,即具有在同一时刻执行多任务的能力。 HDL语言有时序的概念。什么是硬件描述语言HDL具有特殊结构能够对硬件逻辑电路的功能进行描述的一种高级编程语言这种特殊
7、结构能够:描述电路的连接描述电路的功能在不同抽象级上描述电路描述电路的时序表达具有并行性HDL主要有两种:Verilog和VHDLVerilog起源于C语言,因此非常类似于C语言,容易掌握VHDL起源于ADA语言,格式严谨,不易学习。VHDL出现较晚,但标准化早。IEEE 1706-1985标准。为什么使用HDL使用HDL描述设计具有下列优点:设计在高层次进行,与具体实现无关设计开发更加容易早在设计期间就能发现问题能够自动的将高级描述映射到具体工艺实现在具体实现时才做出某些决定HDL具有更大的灵活性可重用可以选择工具及生产厂HDL能够利用先进的软件更快的输入易于管理Verilog的历史Veri
8、log HDL是在1983年由GDA(GateWay Design Automation)公司的Phil Moorby所创。Phi Moorby后来成为Verilog-XL的主要设计者和Cadence公司的第一个合伙人。在19841985年间,Moorby设计出了第一个Verilog-XL的仿真器。1986年,Moorby提出了用于快速门级仿真的XL算法。1990年,Cadence公司收购了GDA公司1991年,Cadence公司公开发表Verilog语言,成立了OVI(Open Verilog International)组织来负责Verilog HDL语言的发展。1995年制定了Veril
9、og HDL的IEEE标准,即IEEE1364。Verilog的用途Verilog的主要应用包括:ASIC和FPGA工程师编写可综合的RTL代码高抽象级系统仿真进行系统结构开发测试工程师用于编写各种层次的测试程序用于ASIC和FPGA单元或更高层次的模块的模型开发抽象级(Levels of Abstraction)Verilog既是一种行为描述的语言也是一种结构描述语言。Verilog模型可以是实际电路的不同级别的抽象。这些抽象的级别包括:系统说明-设计文档/算法描述RTL/功能级-Verilog门级/结构级-Verilog版图/物理级-几何图形行为综合综合前仿真逻辑综合综合后仿真版图抽象级(
10、Levels of Abstraction)在抽象级上需要进行折衷系统说明-设计文档/算术描述RTL/功能级-Verilog门级/结构级-Verilog版图/物理级-几何图形详细程度 低 高输入/仿真速度 高 低抽象级(Levels of Abstraction)Verilog可以在三种抽象级上进行描述行为级 用功能块之间的数据流对系统进行描述 在需要时在函数块之间进行调度赋值。RTL级/功能级用功能块内部或功能块之间的数据流和控制信号描述系统基于一个已定义的时钟的周期来定义系统模型结构级/门级用基本单元(primitive)或低层元件(component)的连接来描述系统以得到更高的精确性,
11、特别是时序方面。在综合时用特定工艺和低层元件将RTL描述映射到门级网表抽象级(Levels of Abstraction)设计工程师在不同的设计阶段采用不同的抽象级首先在行为级描述各功能块,以降低描述难度,提高仿真速度。在综合前将各功能模块进行RTL级描述。用于综合的库中的大多数单元采用结构级描述。在本教程中的结构级描述部分将对结构级(门级)描述进行更详细的说明。Verilog还有一定的晶体管级描述能力及算法级描述能力行为级和RTL级MUX的行为可以描述为:只要信号a或b或sel发生变化,如果sel为0则选择a输出;否则选择b输出。module muxtwo (out, a, b, sel);
12、 input a, b, sel; output out; reg out;always ( sel or a or b) if (! sel) out = a; else out = b;endmodule这个行为级RTL描述不处理X和Z状态输入,并且没有延时。在行为级模型中,逻辑功能描述采用高级语言结构,如, while,wait,if, case。Testbench(test fixture)通常采用行为级描述。所有行为级结构在testbench描述中都可以采用。RTL模型中数据流都是基于时钟的。任何时钟元件在时钟沿处的行为都要精确描述。RTL级描述是行为级Verilog的子集。仅需一种
13、语言Verilog的一个主要特点是可应用于各种抽象级。建模时可采用门级和RTL级混合描述,在开发testfixture时可以采用行为级描述。结构级描述结构级Verilog适合开发小规模元件,如ASIC和FPGA的单元Verilog内部带有描述基本逻辑功能的基本单元(primitive),如and门。用户可以定义自己的基本单元UDP(User Defined Privitives)综合产生的结果网表通常是结构级的。用户可以用结构级描述粘接(glue)逻辑。下面是MUX的结构级描述,采用Verilog基本单元(门)描述。描述中含有传输延时。module twomux (out, a, b, sl)
14、; input a, b, sl; output out; not u1 (nsl, sl ); and #1 u2 (sela, a, nsl); and #1 u3 (selb, b, sl); or #2 u4 (out, sela, selb);endmodule综合不支持!Verilog HDL建模概述数字电路=线+器件线:器件管教之间的物理连接器件:组合逻辑(如与或非门等)和时序逻辑器件(如寄存器、锁存器、RAM等)Verilog HDL建模:使用HDL语言对数字电路的两种基本要素的特性及相互之间的关系进行描述。2.1 建模Verilog HDL建模概述是Verilog的基本描述单
15、元,用于描述某个设计的功能或结构及其与其他模块通信的外部端口概念上可等同一个器件,如通用器件(与门、三态门等)或通用宏单元(计数器、ALU、CPU)等。模块可被另一个模块调用一个电路设计可由多个模块组合而成。2.2 模块(module)Verilog HDL建模概述例1.加法器2.2 模块(module)简单实例Verilog HDL建模概述例2.比较器2.2 模块(module)简单实例Verilog HDL建模概述例3.三态门驱动器2.2 模块(module)简单实例Verilog HDL建模概述模块内容位于module和endmodule两个语句之间模块包括接口描述部分和逻辑功能描述部分
16、。可与实际器件相类比每个模块要进行端口定义,并说明输入、输出口,然后对模块的功能进行逻辑描述(测试模块例外)书写格式自由,一行可以写几个语句,一个语句可以分几行写。除endmodule与局外,每个语句后面需要有分号表示该语句结束2.3 模块的结构Verilog HDL建模概述2.4 模块语法Verilog HDL建模概述一个模块用一个文件模块名与文件名要同名一行一句语句信号方向按输入、输出、双向顺序描述尽量采用参数化,提高设计的重用2.5 书写语法建议Verilog HDL建模概述信号在电路中传输会有传播延时,如线延时、器件延时等时延就是对延时特性的HDL描述所有时延都必须根据时间单位进行定义
17、,定义方式为在文件头添加如下语句: 是Verilog HDL提供的预编译处理命令,1ns表示时间单位是1ns,100ps表示时间精度是100ps。2.6 时延Verilog HDL建模概述表示B信号在2个时间单位后得到A信号的值。2.6 时延时延举例Verilog HDL建模概述结构化描述方式数据流描述方式行为描述方式2.7 三种建模方式Verilog HDL建模概述通过对电路结构的描述来建模,即通过对器件的调用(HDL概念称为“例化”),并使用线来连接各器件的描述方式器件包括:Verilog的内置门(如与门and,异或门xor等),也可以是用户的一个设计反映了一个设计的层次结构2.7 三种建
18、模方式结构化描述方式Verilog HDL建模概述2.7 三种建模方式结构化描述方式例1:一位全加器Verilog HDL建模概述1.两个异或门、两个与门、一个或门2.S1、T1、T2是门与门之间的连线3.纯结构的建模方式4.Xor、and、or为Verilog内置的门器件Xor表明调用一个内置的异或门,器件名称xor,代码实例化名X1;括号内的S1,A,B表明该器件管脚的实际连接线的名称,其中A、B是输入,S1是输出。其他相同一位全加器代码Verilog HDL建模概述结构化描述方式例2:两位全加器两位全加器结构示意框图Verilog HDL建模概述两位全加器代码Verilog HDL建模概
19、述通过对数据流在设计中的具体行为的描述来建模使用连续赋值语句。借助于Verilog提供的一些运算符,如按位逻辑运算,逻辑与(&),逻辑或(|)等2.7 三种建模方式数据流描述方式Verilog HDL建模概述2.7 三种建模方式数据流描述方式例1:一位全加器Verilog HDL建模概述一位全加器代码 注意:各assign语句之间是并行执行的,即各语句的执行与语句之间的顺序无关。 如上,当A有变化时,S1、T2将同时变化,S1的变化又会造成Sum和T1的同时变化。Verilog HDL建模概述采用对信号行为级的描述(不是结构级的描述)的方法来建模一般采用initial块语句或always块语句
20、通常采用行为级的运算符如加法(+),减法(-)运算符等2.7 三种建模方式行为描述方式Verilog HDL建模概述一位全加器行为建模注意:只有寄存器类型的信号才可以在always和initial语句中进行赋值,类型定义通过reg语句实现Always语句一直重复执行,由敏感表中的变量触发在begin和end之间的语句顺序执行,属于串行语句行为描述方式例1Verilog HDL建模概述一位全加器行为建模采用更高级(更趋于行为级)的描述方式,即直接采用“+”来描述加法Cout , Sun表述将两个信号拼接成一个宽度更长的信号。行为描述方式例2Verilog HDL建模概述实际设计中往往是多种设计模
21、式的混合。一般,对顶层设计采用结构描述方式;对底层模块,可采用数据流、行为级或两者的结合如上面的两位全加器,对顶层模块(Four_bit_FA)采用结构描述方式进行“例化”,对底层模块(FA)可采用结构描述、数据流描述或行为描述。2.7 三种建模方式混合设计描述Verilog HDL基本语法标识符注释格式数字值集合数据类型运算符和表达式条件语句Case语句1、标识符定义:标识符(identifier)用于定义模块名、端口名、信号等。可以是一组字母、数字、$符号和_(下划线)符号的组合,但标识符的第一个字符必须是字母或者下划线。另外,标识符区分大小写。例:Count COUNT /与Count不
22、同 R56_68 FIVE$关键字,Verilog中的保留字。注意:只有小写的关键字才是保留字书写规范建议用有意义的有效的名字,如Sum、CPU_addr等用下划线区分词采用一些前缀或后缀, 时钟采用Clk前缀:Clk_50,Clk_CPU 低电平采用_n后缀:Enable_n统一一定的缩写,如全局复位信号Rst同一信号在不同层次保持一致性,如同一时钟信号必须在各模块中保持一致自定义的标识符不能与保留字同名参数采用大写,如SIZE2、注释Verilog中有两种注释的方式,一种是一“/*”符号开始,以“*/”符号结束,在两个符号之间的语句都是注释语句,因此可以扩展到多行。如:以上n各语句都是注释
23、语句另一种是以“/”开头的语句,它表示以/开始到本行的结束都属于注释语句3、格式Verilog HDL是区分大小写的,即大小写不同的标识符是不同的Verilog书写格式自由,一条语句可多行书写;一行可写多个语句空白(新行、制表符、空格)没有特殊意义如 与 是一样的一个语句一行采用空四格的TAB键进行缩进4、数字值集合值的集合常量(整型、实型、字符型)变量4.1值集合四种基本的值类型0:逻辑0或“假”1:逻辑1或“真”X:未知值Z:高阻四种值得解释内置于语言中与门的输入或表达式中的“z”的值通常解释为“x”X值与z值不区分大小写,及0 x1z和0X1Z相同4.2常量整型、实型、字符串型下划线符号
24、“_”可随意用在整数或实数中,用来提高易读性。注:下划线不能作为首字符。整型书写格式:简单的十进制数格式;基数格式字符串型:双引号内的字符系列。4.2.1整型-简单的十进制格式带有一个可选的“+”或“-”操作符的数字序列例如:32 十进制数32-15 十进制数-154.2.1整型-基数表示法(一)格式:sizebase valueSize定义以位计的常量的位长;base为o或O(表示八进制),b或B(表示二进制),d或D(表示十进制),h或H(表示十六进制)之一;value是基于base的值的数字序列。值x和z以及十六进制中的a到f不区分大小写4.2.1整型-基数表示法(二)合法例子:非法例子
25、:4.2.1整型-基数表示法(三)注意:x(或z)在十六进制中代表4位x(或z),在八进制中代表3位x(或z),在二进制中代表1位x(或z)。整型数的长度定义是可选的,如没有定义长度,数的长度为相应值中定义的位数,如:如果定义的长度比常量制定的长度长,通常在左边填0补位。但是如果数最左边一位为“x”或“z”,就相应地用x或z在左边补位。如:如果长度定义的要小,最左边的位相应地被截断。如:4.2.2字符串型双引号内的字符序列。字符串不能分成多行书写。例:整数型常量是可以综合的,而实数型和字符串型常量都是不可综合的5、数据类型线网类型(net type)寄存器类型(reg type)5.1数据类型
26、-线网类型(net type)常用wire定义用于对结构化器件之间的物理连线建模代表物理连接线,不存储逻辑值,必须由器件驱动,通常由Assign进行赋值,如:当一个wire类型的信号没有被驱动时,缺省值为z(高阻)信号非有定义数据类型时,缺省为wire类型语法:5.2数据类型-寄存器类型(reg type)Reg是最常用的寄存器类型,用于对存储单元的描述,如D触发器,ROM。在某种触发机制下分配一个值,在分配下一个值之前保留原值Reg类型的变量,不一定是存储单元,如在always语句中进行描述的必须用reg类型的变量。语法:例:5.2数据类型-寄存器类型(reg type)建模举例:用寄存器类
27、型构建两位的D触发器:用寄存器数组类型来建立存储器的模型,如对2个8位的RAM建模如下:存储单元必须一个一个地赋值6、运算符关系运算符算术运算符逻辑运算符按位逻辑运算符条件运算符连接运算符移位运算符6.1运算符-算术运算符常用算术运算符:加法(二元运算符):“+”减法(二元运算符):“-”乘法(二元运算符):“*”除法(二元运算符):“/”求余(二元运算符):“%”6.2运算符-关系运算符(一)包括:大于=不小于=不大于=等于=全等!=不等!=不全等结果为True(1)或False(0)。如果操作数中有一位为x或z,那么结果为x6.2运算符-关系运算符(二)例:如果操作数长度不同,长度较短的操
28、作数在左方填0补齐。例:逻辑相等与不等的比较中,只要一个操作数含有x或z,比较结果为未知(x)。如:6.3运算符-逻辑运算符(一)包括:&逻辑与|逻辑或!逻辑非语法:(表达式1) 逻辑运算符 (表达式2)运算结果为0或1,例:6.3运算符-逻辑运算符(二)逻辑与(&)的真值表:逻辑或(|)的真值表:6.4运算符-按位逻辑运算符(一)包括:一元非,相当于非门运算&二元与,相当于与门运算|二元或,相当于或门运算二元异或,相当于异或门运算, 二元异或非,即同或,相当于同或门运算在输入操作数的对应位上按位操作,产生向量结果。6.4运算符-按位逻辑运算符(二)按位逻辑运算符真值表:6.2运算符-按位逻辑
29、运算符(三)例:如果操作数长度不相等,长度较小的操作数在最左端填0补位。例如:6.5运算符-条件运算符根据条件表达式的值选择表达式语法:cond_expr ? expr1 : expr2;如果cond_expr为真(1),选项expr1,如果cond_expr为假(0),选择expr2.如果cond_expr为x或z,结果是按以下逻辑expr1和expr2按位操作的值:0与0得1,1与1得1,其余情况为x例:6.6运算符-连接运算符将小表达式合并形成大表达式语法:expr1, expr2, , exprN例:6.7运算符:移位运算符 右移位运算符语法:an 或 a2的值为5b00110 A2的
30、值为5b001007、If_else(条件)语句用来判定所给定的条件是否满足,根据判定的结果(真或假)决定执行给出的两种操作之一。三种形式:If_else语句的三种形式说明:1.if语句后面都有表达式,一般为逻辑表达式或关系表达式。0、x、z按“假”处理,1按“真”处理。2.注意分号的使用,if、else合起来是一条语句,else不能单独使用3.if、else后面如果有多个操作语句,必须用begin和end关键字包含起来组成为一个复合语句,例说明:4.允许一定形式的表达式简写,例如:5.if语句的嵌套注意if和else的配对关系,else总是与它上面最近的if配对。可以用begin、end块语
31、句来确定配对关系。例:例:使用begin和end块语句来确定if和else的配对关系8、case语句多分支选择语句三种形式:1.case(表达式) endcase2.casez(表达式) endcase3. casex(表达式) endcase语法:说明:1.case括号中的表达式称为控制表达式,分支项中的表达式称为分支表达式。2.当控制表达式的值与分支表达式的值项相等时,就执行分支表达式后面的语句;如果所有的分支表达式的值都没有与控制表达式的值相匹配,就执行default后面的语句3.default项可有可无,一个case语句只能有一个default项4.每个分支表达式的值必须互不相同,否则
32、会出现矛盾。5.所有表达式值的位宽必须相等。6.case、casez、casex的区别,case为全等比较,casez对表达式中出现z的相应位不予比较,casex对表达式中出现x、z的相应位均不予比较,见真值表三种建模方式详解结构建模数据流建模行为建模1、结构建模(一)描述语句主要是实例化语句实例化的对象主要是PLD厂家提供的宏单元和设计者已有的设计结构建模(二)实例化语句语法:module_name instance_name ( port_associations);端口关联可通过位置或名称关联,但两者不能混用通过位置关联(port_expr1, port_expr2, , port_ex
33、prn);通过名称关联(.PortName(portexpr1), .PortName(port_expr2), .PortName(port_exprn);结构建模(二)实例化语句例1:.module and(C,A,B);input A,B;output C;.and A1(T3,A,B);/实例化时采用位置关联,T3对应输出端口C,A对应A,B对应B。and A2(/实例化时采用名字关联,.C是and器件的端口,其与信号T3相连.C(T3),.A(A),.B(B);结构建模(二)实例化语句port_expr可以是以下的任何类型:1)标识符(reg或net)如.C(T3),T3为wire型
34、标识符。2)位选择,如.C(D0),C端口接到D信号的第0bit位。3)部分选择,如.Bus(Din5:4)。4)上述类型的合并,如.Addr(A1,A21:0。5)表达式(只适用于输入端口),如.A(wire Zire=0)。建议:在例化的端口映射中请采用名字关联,这样,当被调用的模块管脚改变时不易出错。结构建模(二)实例化语句端口悬空的处理:在我们的实例化中,可能有些管脚没用到,可在映射中采用空白处理,如:DFF d1(.Q(QS),.Qbar(),.Data(D),.Preset(),/该管脚悬空.Clock(CK);/名称对应方式。对输入管脚悬空的,则该管脚输入为高阻Z,输出管脚被悬空
35、的,该输出管脚废弃不用。当端口和局部端口表达式的长度不同时,端口通过无符号数的右对齐或截断方式进行匹配例如:module Child(Pba,Ppy);input5:0Pba;output2:0Ppy;.endmodulemodule Top;wire1:2Bdl;wire2:6M p r;Child C1(Bdl,Mpr);endmodule在对Child模块的实例中,Bdl2连接到Pba0,Bdl1连接到Pba1,余下的输入端口Pba5、Pba4和Pba3悬空,因此为高阻态z。与之相似,Mpr6连接到Ppy0,Mpr5连接到Ppy1,Mpr4连接到Ppy2。参见下图:结构化建模具体实例对一
36、个数字系统的设计,我们采用的是自顶向下的设计方式。可把系统划分成几个功能模块,每个功能模块再划分成下一层的子模块。每个模块的设计对应一个module,一个module设计成一个verilog HDL程序文件。因此,对一个系统的顶层模块,我们采用结构化的设计,即顶层模块分别调用了各个功能模块。下面以一个实例(一个频率计数器系统)说明如何用HDL进行系统设计。在该系统中,我们划分成如下三个部分:2输入与门模块,LED显示模块,4位计数器模块。系统的层次描述如下:顶层模块CNT_BCD,文件名CNT_BCD.v,该模块调用了低层模块AND2、CNT_4b和HEX2LED。2、数据流建模(一)主要描述
37、方式为持续性赋值语句数据流建模(二)持续性赋值语句也称连续赋值语句(continuous assignment)对线网类型变量赋值语法:assign net_type = expression;主要用于组合逻辑的建模执行过程:只要右边表达式任一个变量有变化,表达式立即被计算,计算的结果立即赋给左边信号为并行执行语句,与书写顺序无关数据流建模(二)持续性赋值语句举例:例:2选1多路选择器阻塞(blocking)赋值方式赋值符号为“=”,如:b=a;语句结束时立即完成赋值操作,即b的值在该条件语句结束后立即改变同一个块语句中,如果有多个阻塞赋值语句,那么前面的赋值操作没完成之前,后面的语句就不能被
38、执行,仿佛被阻塞(blocking)了一样。阻塞性过程赋值:在其后所有语句执行前执行,即在下一语句执行前该 赋值语句完成执行如:always(A or B or Cin)Begin:CARRY_OUTReg T1,T2,T3T1=A&BT2=B&CinT3=A&CinCout=(T1|T2)|T3end使用内部延时控制的阻塞性过程赋值语句如:initialbeginClr = #5 0 /在0时刻执行,5个时间单位后被赋值Clr = #4 1 /4个时间单位后被赋值为1Clr = #10 0/10个时间单位后被赋值为0end非阻塞(non-blocking)赋值方式赋值符号为“=”,如:b=a
39、;非阻塞赋值在整个过程块结束时才完成赋值操作,即b的值并不是立即就改变的非阻塞性过程赋值中,对目标的赋值是非阻塞的,即为时间并行的,所有的赋值均在同一时刻发生如:initialbeginClr = #5 1 /在第5个时间单位被赋值为1Clr = #4 0 /在第4个时间单位被赋值为0Clr = #10 0/在第10个时间单位被赋值为0end赋值语句阻塞赋值与非阻塞赋值例1:非阻塞赋值 例2:阻塞赋值赋值语句阻塞赋值与非阻塞赋值例1仿真结果例2仿真结果赋值语句阻塞赋值与非阻塞赋值例1综合结果例2综合结果赋值语句阻塞赋值与非阻塞赋值六点建议:时序电路建模时,用非阻塞赋值锁存器电路建模时,用非阻塞
40、赋值用always块建立组合逻辑模型时,用阻塞赋值在同一个always块中建立时序和组合逻辑电路时,用非阻塞赋值在同一个always块中不要既用阻塞赋值又用非阻塞赋值不要在一个以上的always块中为同一变量赋值3、行为建模通过对设计的行为的描述来实现对设计建模一般采用过程语句(initial语句和always语句)行为建模initial语句语法1:initial 语句1;语法2:只执行一次常用于产生激励信号或寄存器变量的初始化仿真语句,不能被综合行为建模initial语句例:用initial语句产生激励信号行为建模always语句语法1:always 时序控制 语句1;语法2:always语句不断重复执行,即一直检测时序控制条件,一旦满足,其后的语句被执行一次行为建模always语句例:时序控制通常为敏感信号表达式,当表达式中变量的值改变时,其后的语句被执行一次,多个表达式之间用“or”连接,此时的语法为:敏感信号一般为两种类型:边沿敏感型和电平敏感型,两者一般不要在一个always语句中同时使用行为建模always语句边沿触发的always常常描述时序行为,综合后生成的电路为寄存器加门级组合逻辑电平触发的always常常描述组合逻辑行为,综合后生成的电路为门级组合逻辑或带锁存器的组合逻辑例:行为建模posedge和negedge关键字对时序
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 简约设计的力量
- 兰考三农职业学院《数字信号处理与通信》2023-2024学年第二学期期末试卷
- 上海工程技术大学《复变函数B》2023-2024学年第一学期期末试卷
- 浙江省桐乡市市级名校2025届初三TOP20九月联考(全国II卷)英语试题试卷含答案
- 2025年辽宁省抚顺本溪铁岭辽阳葫芦岛市中考模拟试卷(1)化学试题含解析
- 广东省深圳市深圳外国语达标名校2025年协作体中考摸底测试化学试题试卷含解析
- 甘肃省天水一中2025年高三下学期第二次模拟语文试题含解析
- 广东省惠州市惠东县2024-2025学年初三化学试题5月考前最后一卷含解析
- 重庆电子工程职业学院《项目管理与预算》2023-2024学年第二学期期末试卷
- 清新论文研究成果总结与展望
- 老姜盘口语言解密高级版全集
- 现代环境生物技术
- 第四章铅酸蓄电池
- GA 1517-2018金银珠宝营业场所安全防范要求
- 保险公司首转对团队的意义方法课件
- TAVI(经皮导管主动脉瓣植入术)术后护理
- 6.3.1 平面向量基本定理 课件(共15张PPT)
- 建筑消防设施巡查记录
- 混凝土护栏检查记录表
- DBJ04∕T 258-2016 建筑地基基础勘察设计规范
- 社会团体民办非清算审计报告模板
评论
0/150
提交评论