EDA_VerilogHDL_复习提纲
- 格式:doc
- 大小:81.50 KB
- 文档页数:5
感谢张孙D触发器:同步时序触发是输出信号q和qn与时钟的上升沿同步,也就是reset=0时不会马上出发还需要满足clk=1时,输出q和qn才会翻转。
异步时序触发是输出信号q和qn在reset=0时立刻翻转同步时序图像:异步时序图像:D触发器程序代码:(1)功能模块:`timescale 1ns/1nsmodule DFF (rest,d,clk,q,qn);input rest,d,clk;output reg q,qn;/*//not same stepalways@(posedge clk,negedge rest)if(!rest)beginq<=0;qn<=1;endelsebeginq<=d;qn<=!d;end*///same stepalways@(posedge clk)if(!rest)beginq<=0;qn<=1;endelsebeginq<=d;qn<=!d;endendmodule(2)Tb模块:`timescale 1ns/1nsmodule DFF_TB ;reg rest_i,d_i,clk_i;wire q_o,qn_o;DFFDUT(.rest(rest_i),.d(d_i),.clk(clk_i), .q(q_o),.qn(qn_o));always #5 clk_i=!clk_i;initialbeginclk_i=0;rest_i=0;#50d_i=1;rest_i=1;#50d_i=0;#40d_i=1;#40rest_i=0;#100rest_i=1;#1000$stop;endendmodule分频器:所谓分频器就是把原有的高频clk信号分为低频输出信号,就是相同时间输出比输入的信号周期更少。
如下图,clk_in信号一个周期是10ns,clk_out信号一个周期是80ns,所以下图是一个8分频,对Divider_count赋值可以实现2^n的分频,clk_in的定义是为了方便时钟控制信号,例如实现同步时序或异步时序;n_rst的定义是复位的意思,是为了使得设计出的电路跑飞时可以重新工作,clk_out是输出,Divider_counter是中间变量,使用它计数,赋值实现功能,不能在input,output中定义,令外,程序中注释掉得程序可以实现4分频,是利用逻辑比较的方法,比较特殊不是所有分频都可以用,此外想用这段程序前面定义的变量要改改。
第1章 EDA技术概述1. EDA:EDA(Electronic Design Automation)电子设计自动化,EDA技术依赖于强大的计算机,在EDA工具软件平台上,对以HDL(Hardware Description Language--硬件描述语言)为系统逻辑描述手段完成的设计文件,自动完成逻辑化简、逻辑分割、逻辑综合、结构综合(布局布线),以及逻辑优化和仿真测试等项功能,直至实现既定性能的电子线路系统功能。
2. EDA的设计输入有:图形输入方式:原理图输入,状态图输入;HDL文本输入:VHDL,Verilog3. 常用缩写FPGA(Field Programable Gate Araay)CPLD(Complex Programmable Logic Device)ASIC(Application Specific Interated Circuit)SOC(System on a Chip)SOPC(System-on-a-Programmable-Chip)HDL(Hardware Description Language)IP(Intellectual Property)CAD(Computer Aided Design)CAM(Computer Aided Manufacturing)CAT(Computer Aided Test)CAE(Computer Aided Engineering)CAA(Computer Aided Analysis)4.综合(Synthesis):将用行为和功能层次表达的系统转换成低层次的便于具体实现的模块组合装配过程。
整个综合过程就是将设计者在EDA平台上编辑输入的HDL文本、原理图或状态图形描述,依据给定的硬件结构组件和约束控制条件进行编译、优化、转换和综合,最终获得门级电路甚至更底层的电路描述网表文件。
5.适配:适配器也称结构综合器,它的功能是将由综合器产生的网表文件配置于指定的目标器件中,使之产生最终的下载文件,如JEDEC、Jam格式的文件。
EDA基础知识复习要点EDA(探索性数据分析)是指对数据集进行初步的探索,以了解数据的特征、相互关系和隐藏的模式。
它是数据分析的重要环节,可以帮助我们发现数据中的特殊特征、异常值和缺失值,为后续的建模和决策提供基础。
下面是EDA基础知识的复习要点。
1.数据集的基本情况-数据集的大小和维度:了解数据集包含的样本数量和特征数量。
-数据类型和缺失值:检查每个特征的数据类型并确定是否存在缺失值。
-数据的摘要统计信息:计算每个特征的基本统计指标,如均值、中位数、标准差等。
-数据可视化:使用直方图、箱线图、散点图等可视化工具来展示数据的分布和异常值。
2.数据的清洗和预处理-处理缺失值:根据缺失值的情况选择适当的方法填充或删除缺失值。
-处理重复值:检查是否存在重复的样本或特征,并根据需要删除或合并重复值。
-异常值处理:通过设定阈值或使用统计方法来检测和处理异常值。
-标准化和归一化:对于数据集中的数值型特征,可以进行标准化或归一化处理,使其具有相同的尺度。
3.特征工程-特征选择:根据特征的重要性和相关性选择最相关的特征,减少特征的维度。
-特征构建:使用原始特征衍生出新的特征,例如添加多项式特征、交互特征等。
4.数据探索-变量间的关系:分析变量之间的相关性和因果关系,帮助了解特征之间的影响。
-群组分析:将数据集中的样本划分为不同的组群,发现数据的内在结构和模式。
-关键性因素:识别影响特定结果的重要因素,找到数据集中的关键趋势和影响因素。
5.可视化分析-直方图:显示定量变量的分布情况,帮助了解数据的偏态和尾部情况。
-箱线图:显示定量变量的中位数、上下四分位数和异常值,有助于观察数据的离散情况。
-散点图:显示两个变量之间的关系,帮助检测变量之间的线性关系或异常值。
-折线图:显示变量随时间变化的趋势,用于分析时间序列数据。
6.结果解释和报告-对EDA结果进行总结和解释,包括数据集的特点、重要特征、异常值等。
-以清晰和可视化的方式呈现结果,如使用图表、表格等形式。
EDA技术复习资料一、填空1、EDA设计流程包括设计准备、设计输入、设计处理、和器件编程序四个步骤。
2、EDA的设计验证包括功能仿真、时序仿真和器件测试三个过程。
3、EDA的设计输入主要包括文本输入方式、图形输入方式、和波形输入方式。
4、文本输入是指采用硬件描述语言进行电路设计的方式。
5、功能仿真实在设计输入完成以后,选择具体器件进行编译之前进行的逻辑功能验证,因此又称为前仿真。
6、时序仿真实在选择了具体器件并完成布局、布线之后进行的时序关系仿真,因此又被称为后仿真或延时仿真。
7、当前最流行的并成为IEEE标准的硬件描述语言包括VHDL、和VERILOG HDL。
8、EDA工具大致分为设计输入编辑器、仿真器、HDL综合器、适配器(或布局布线器)、以及下载器等五个模块。
9、IEEE于1987年将VHDL采纳为IEEE#1076标准。
10、用VHDL语言书写的源文件。
即是程序又是文档,即是工程技术人员之间交换信息的文件,又可作为合同签约者之间的文件。
11、用VHDL设计的电路,既可以被高层次的系统调用,成为系统的一部分,也可以作为一个电路的功能快独立存在和独立运行。
12、VDHL设计实体的基本结构由库、程序包、实体、结构体和配臵等部分构成。
13、实体和结构体是设计实体的基本组成部分,它们可以构成最基本的VHDL程序。
14、根据VHDL语法规则,在程序中使用的文字、数据对象、数据类型都需要预先定义。
15、VHDL的实体由实体声明部分和结构体组成。
16、VHDL的实体声明部分制订了设计单元的输入输出端口或引脚,它是设计实体对外的一个通信界面,是外界可以看到的部分。
17、VDHL的结构体用来描述设计实体的逻辑结构和逻辑功能,它由VHDL语句构成,是外界看不到的部分。
18、在VHDL的端口声明语句中,端口方向包括IN、OUT、INOUT和BUFFER。
19、VHDL的数据型文字包括整数文字、实数文字、以数制基数表示的文字和物理量文字。
第一章1、EDA的定义:以计算机为工作平台,以EDA软件工具为开发环境,以硬件描述语言为设计语言,以ASIC为实现载体的电子产品自动化设计过程。
2、EDA的三大特征:硬件描述语言、系统级仿真、综合技术3、EDA的设计方法:自上而下4、EDA的核心:利用计算机完成电路设计的全程自动化5、常用的EDA工具及其作用:设计编辑器:一般支持图形输入,HDL文本输入,波形图输入等仿真器:完成行为模型的表达、电子系统的建模、逻辑电路的验证以及门级系统的测试HDL综合器:将软件描述与给定的硬件结构用某种网表文件的方式对应起来,成为相互的映射关系。
适配器:将由综合器产生的网表文件配置于指定的目标器件中,使之产生最终的下载文件,下载器:在功能仿真与时序仿真正确的前提下,将设计下载到对应的实际器件中,实现硬件设计6、EDA的设计流程:设计输入(将设计的系统或电路按照EDA开发软件要求的文本方式或图形方式表示出来,并送入计算机的过程。
)→综合(由高层次描述自动转换为低层次描述的过程,是EDA技术的核心。
)→适配(将综合后的网表文件针对某一具体的目标器件进行逻辑映射操作。
)→仿真(功能仿真:对逻辑功能进行模拟测试,看是否符合设计及要求;时序仿真:包含硬件特性参数,仿真精度高)→目标器件的编程下载(将编程数据发放到具体的可编程器件中去)→硬件测试(FPGA或CPLD直接用于应用系统的检测中)第二章1、PLD的基本结构:输入缓冲器、与阵列、或阵列、输出缓冲器;电路的核心是由门电路构成的与阵列、或阵列,逻辑函数靠它们实现。
与阵列产生乘积项,或阵列产生乘积项之和。
2、PLD的分类:简单PLD:PROM:与门阵列固定,或门阵列可编程。
优点:价格低、易编程性能可预测。
不足:规模大、速度低、功耗高。
PLA:与阵列和或阵列均可编程。
特点使用灵活,运行速度慢,价格高,缺少高质量的支持软件,使用不广泛。
PAL:与阵列可编程,或阵列固定,即乘积项可若干,数目固定。
EDA verilog hdl考试题和答案一、选择题(每题2分,共20分)1. 在Verilog HDL中,以下哪个关键字用于定义模块?A. moduleB. endmoduleC. inputD. output答案:A2. Verilog HDL中,以下哪个操作符用于按位取反?A. ~B. !C. ^D. &答案:A3. 在Verilog HDL中,以下哪个关键字用于定义组合逻辑?A. alwaysB. initialC. always_combD. always_seq答案:C4. 以下哪个是Verilog HDL中合法的标识符?A. 2variableB. variable2C. variable$2D. variable_2答案:B5. 在Verilog HDL中,以下哪个关键字用于定义信号的初始值?A. initialB. alwaysC. assignD. defparam答案:A6. 在Verilog HDL中,以下哪个关键字用于定义参数?A. parameterB. defparamC. localparamD. specparam答案:A7. 在Verilog HDL中,以下哪个关键字用于定义一个始终块,该块在仿真开始时执行一次?A. alwaysB. initialC. always_combD. always_ff答案:B8. 在Verilog HDL中,以下哪个操作符用于逻辑与?A. &&B. &C. ||D. |答案:B9. 在Verilog HDL中,以下哪个关键字用于定义一个始终块,该块在信号变化时触发?A. alwaysB. initialC. always_combD. always_ff答案:A10. 在Verilog HDL中,以下哪个关键字用于定义一个三态输出?A. outputB. inoutC. triD. wire答案:C二、填空题(每题2分,共20分)1. 在Verilog HDL中,____关键字用于定义一个始终块,该块在信号的边沿触发时执行。
1.什么是EDA技术?什么是狭义EDA?什么是广义EDA?P12.利用EDA技术进行电子系统设计的最终目标是什么?P23.IEEE标准化的HDL语言有哪两种?P34.EDA开发设计流程的步骤?其中设计输入有哪些方法?什么是综合?什么是适配?什么是功能仿真?什么是时序仿真?P5~85.可编程逻辑器件有哪些分类方法?各可分为哪几类?P106.简单PLD中的PROM和GAL在结构上有何异同?P127.CPLD器件的最基本可编程单元是什么?由哪几部分组成?P148.FPGA器件的最基本可编程单元是什么?由哪几部分组成?P179.CPLD的内部结构组成?P1410.FPGA的内部结构组成?P1711.查找表原理?P1612.JTAG边界扫描测试技术的作用?使用哪几个引脚?JTAG端口的用途?P2013.PLD的编程工艺?P2114.什么是编程?什么配置?15.什么是IP核?有哪几种?P2316.什么是基于乘积项结构的器件?什么是基于查找表结构的器件?第2章1.VHDL程序的组成部分?各部分的作用?P262.端口模式有哪几种?各模式有何异同?P293.子程序定义的位置?子程序包含哪两种类型?有何区别?(定义的区别?调用的区别?)P2644.什么是重载函数?P2665.程序包首和程序包体的关系P2776.VHDL标识符的使用规则?P367.VHDL的三种数据对象?使用时的区别?P37习题:2-2、2-4、2-61.VHDL的数据类型限定了数据对象的什么内容?P412.VHDL的数据类型分为哪几大类?P413.VHDL中顺序语句有哪些?它们执行特点是什么?P504.进程语句有什么特点?P525.触发器和锁存器的区别是什么?习题:3-1、3-2、3-5、3-6、3-8、3-12第5章1. VHDL中并行语句有哪些?它们执行特点是什么?P1102.条件信号赋值语句和选择信号赋值语句使用时有什么不同点,分别与进程中的哪种语句等效?P111~1123.块语句的作用?P1134.元件例化语句的作用?P1135.VHDL中可由用户自定义的数据类型有哪些?P1206.用VHDL设计一个奇偶校验电路。
eda与vhdl复习资料选择题练习一、VHDL基本结构1. 一个项目的输入输出端口是定义在A. 实体中B. 结构体中C. 任何位置D. 进程中2. 描述项目逻辑功能的是A. 实体B. 结构体C. 配置D. 进程3. 关键字ARCHITECTURE定义的是A. 结构体B. 进程C. 实体D. 配置4.VHDL语言共支持四种常用库,其中哪种库是用户的VHDL 设计现行工作库:A.IEEE库B.VITAL库C.STD库D.WORK工作库5. VHDL语言是一种结构化设计语言;一个设计实体(电路模块)包括实体与结构体两部分,结构体描述是A.器件外部特性;B.器件的内部功能;C.器件的综合约束;D.器件外部特性与内部功能。
6. 在VHDL中,库可以包含一个或多个A. 程序包B. 结构体C. 输入D. 输出7. 一个能为VHDL综合器接受,并能作为一个独立的设计单元的完整的VHDL程序成为A.设计输入B. 设计输出C. 设计实体D. 设计结构8. Q为输出信号,但内部设计会用到其反馈信号,其正确的端口说明是:A. Q:IN BIT;B. Q:OUT BIT;C. Q:INOUT BIT;D. Q:BUFFER BIT;9.VHDL语言程序结构的特点是把一个设计实体分成A.外部和内部B.实体和实体说明C.结构体和结构体说明D.图形部分和文本部分10. VHDL设计文件的实体说明部分描述的是A.电路系统的内部结构B.电路系统的逻辑功能C.电路系统的主要参数D.电路系统的外部端口11.VHDL语言程序结构中必不可少的部分是:A.库B.程序包C.配置D.实体和结构体12. 下列选项中,哪些项在VHDL程序设计文件中属于可选部分A.库和实体B.实体和结构体C.结构体和配置D. 库、程序包和配置13. 关于VHDL中实体说明的格式,以下叙述不正确的是A.实体说明以“ENTITY 实体名IS”开头,以“END 实体名”结束B.实体说明中包含类属表和端口说明两部分C.端口说明中只需要规定端口的模式即可D.实体名一定要与设计文件同名14. 在VHDL的实体说明中,端口名表的作用是A.列出所有输入端口的名称B.列出所有输出端口的名称C.说明实体输入、输出端口的信号类型及端口模式D.只定义输入、输出端口的数目15. 在VHDL中,为了使已声明的数据类型、子程序、元件能被其他设计实体调用或共享,可以把它们汇集在中。
EDA复习的知识要点及答案EDA知识要点:1、EDA技术的含义。
EDA(Electronic Design Automation)即电子设计自动化:是以计算机为工作平台以EDA软件工具为开发环境以软件描述语言为设计语言以ASIC为实现载体的电子产品自动化设计过程。
2、简述EDA技术经历了那几个发展阶段。
EDA技术:计算机辅助设计CAD、计算机辅助工程CAE、电子系统设计自动化ESDA.3、可编程器件(PLD)分为哪两类4、可编程器件分为哪些类?可编程逻辑器件分为:简单可编程逻辑器件SPLD、复杂可编程逻辑器件CPLD、现场可编程门阵列FPGA、在系统可编程ISP逻辑器件。
5、简述EDA技术的CPLD/FPGA的设计流程。
6、目前国际上较大的PLD器件制造公司有那几家公司。
三大公司:Altera、Xilinx西林、Lattice来迪恩。
7、目前较流行的集成EDA开发环境(软件)有那些?Altera公司的QuartusⅡ和maxplusⅡ、Xilinx公司的ISE、Lattice公司的ispLEVER Adbanced System。
8、目前流行的HDL语言有那些?ABEL-HDL、AHDL、VHDL9、硬件描述语言(HDL)的种类很多?10、什么是ASIC。
ASIC(Application Specific Intergrated Circuits)即专用集成电路,按照设计方法不同可分为:全定制ASIC、半定制ASIC、可编程ASIC11、VHDL作为工业标准,是由那个机构制定并公布的。
IEEE12、VHDL是由什么机构制定并公布的。
IEEE1076、IEEE1076-199313、VHDL的两大类基本描述语句是什么。
VHDL的基本描述语句有并行语句(Concurrent Statements)和顺序语句(Sequential Statements)两大类14、从执行方式看VHDL的基本描述语句包括哪两大基本描述语句?15、MAX+PLUSⅡ平台上,原理图、仿真波形文件、VHDL文件的扩展名是什么?原理图.gdf、仿真.scf、vhdl.vhd。
1.EDA技术是20世纪后期,伴随着微电子技术、大规模集成电路制造技术、计算机辅助工程、可编程逻辑器件以及电子设计技术和工艺的发展而同步发展形成的一门综合性的技术与学科。 2在EDA工具软件平台上,自动完成从软件方式描述的数字系统到硬件系统的逻辑化简、逻辑分割、逻辑综合、结构综合(布局布线)、逻辑优化和仿真测试等功能,随之完成对于特定目标芯片的适配、逻辑映射、编程下载等工作,直至硬件实现整个数字系统 3.综合是将高层次上描述的电子系统转换为低层次上描述的电子系统,以便于系统的具体硬件实现 综合器是能自动将高层次的表述(系统级、行为级)转化为低层次的表述(门级、结构级)的计算机程序 4.设计输入的方式有原理图、硬件描述语言、状态图以及波形图 5.按照仿真的电路描述级别的不同,HDL仿真器可以完成:系统级仿真,行为级仿真,RTL级仿真,门级(时序)仿真。按照仿真是否考虑硬件延时分类,可以分为:功能仿真和时序仿真。仿真器可分为基于元件(逻辑门)仿真器和基于HDL语言的仿真器 6. IP核是知识产权核或知识产权模块,在EDA技术中具有十分重要的地位。半导体产业的IP定义为用于ASIC或FPGA中的预先设计好的电路功能模块。IP分为软IP、固IP和硬IP。 7.可编程逻辑器件PLD是一种通过用户编程或配置实现所需逻辑功能的逻辑器件,也就是说用户可以根据自己的需求,通过EDA开发技术对其硬件结构和工作方式进行重构,重新设计其逻辑功能 8.两种可编程逻辑结构是基于与-或阵列可编程结构(乘积项逻辑可编程结构)、基于SRAM查找表的可编程逻辑结构 9.PLD按集成度分类:简单PLD、复杂PLD;按结构分类:基于 “与-或”阵列结构的器件、基于查找表结构的器件;从编程工艺上分类:熔丝型、反熔丝型、EPROM型、EEPROM型、SRAM型、Flash型 10.四种简单逻辑器件:PROM中固定的与阵列,可编程或阵列;PLA是与阵列、或阵列都可编程;PAL中或阵列固定,与阵列可编程;GAL是或阵列、与阵列都可编程,输入部分增加了输出逻辑同单元(OLMC) 11.CPLD的组成结构:逻辑阵列块(由逻辑宏单元构成)、扩展乘积项(共享和并联)、可编程连线阵列、I/O控制块 12.FPGA的组成结构:逻辑阵列块LAB(由多个逻辑宏单元构成)、嵌入式存储器块、嵌入式硬件乘法器、I/O单元和PLL等模块 13.Verilog的端口模式有三种:输入端口、输出端口、双向端口,对应的端口定义关键词分别是:input、output、inout 14.Verilog中常用有两种变量:寄存器型变量(用reg定义)、网线型变量(用wire定义) 15.Verilog有两种赋值方式:阻塞式赋值(=)、非阻塞式赋值(<=) 16.Verilog有四种循环语句:for语句、repeat语句、while语句、forever语句 17.Verilog的描述风格:RTL描述 、数据流描述、行为描述、结构描述 18.从状态机的信号输出方式上分,有Mealy型和Moore型两种状态机;从状态机的描述结构上分,有单过程状态机和多过程状态机;从状态机表达方式上分,有符号化状态机和确定状态编码的状态机;从状态机编码方式上分,有顺序编码状态机、一位热码编码状态机或其他编码方式状态机。 19.状态机结构通常包含说明部分、主控时序过程、主控组合过程、辅助过程等几个部分 20.非法状态是在状态机设计中,使用枚举类型和直接指定状态编码的程序中,特别是使用了一位热编码方式后,总是不可避免地出现大量剩余状态,即未被定义的编码组合。这些状态在状态机的正常运行中是不需要出现的。剩余状态的处理要不同程度地耗用逻辑资源,这就要求设计者在选用何种状态机结构,何种状态编码方式,何种容错技术及系统的工作速度与资源利用率方面权衡比较,以满足自己的设计要求
1.简述自顶向下的设计方法 答:①从自然语言说明到HDL的系统行为描述;②从HDL的系统行为描述到RTL描述;③从RTL描述到逻辑门级描述;④从门级描述到最终可以物理布线实现的底层电路;(以上可以理解成是逐步综合的过程。)⑤后期设计还包括涉及硬件实现和测试。 2.简述EDA的设计流程 答:①图形输入:a.原理图b.硬件描述语言c.状态图d.波形图;②HDL文本输入;③综合;④适配;⑤功能仿真与时序仿真;⑥编程下载;⑦硬件测试 3.简述过程语句的执行过程 答:①由always@引导的过程语句结构是Verilog中最常用和最重要的语句结构。②任何顺序语句都必须放在过程语句结构中。③通常要求将过程语句中所有的输入信号都放在敏感信号表中。(a.用文字or连接所有敏感信号。b.用逗号区分或连接所有敏感信号。c.省略形式,只写成(*),或直接写成 always @ * ,显然试图通过选择性地列入敏感信号来改变逻辑设计是无效的。)④过程语句的执行依赖于敏感信号的变化(发生事件)。当某一敏感信号发生变化,过程语句被启动,内部的所有顺序语句被执行一遍,然后返回过程起始端,再次进入等待状态,直到下一次某一敏感信号发生变化再次进入“启动-运行”状态。过程语句结构是一个不断重复运行的模块。⑤一个模块中可以包含任意个过程语句,过程语句本身属于并行语句,而由过程引导的各类语句属于顺序语句。 4.简述什么是元件例化 答:元件例化就是引入一种连接关系,将预先设计好的元件,与当前设计模块中的指定端口相连接,从而构成层次化的设计方式。元件例化可以是多层次的,一个调用了较低层次元件的设计模块,也可以被更高层次的设计模块调用,成为高层次设计模块中的一个元件。被例化的元件可以以不同的形式出现,可以是Verilog设计文件,可以是FPGA元件库中的元件,或者是以别的硬件描述语言设计的元件,还可以是IP核。 5.简述阻塞赋值语句和非阻塞赋值语句的过程区别 答:阻塞赋值语句的执行过程可以分成两步:计算驱动表达式的值;完成赋值(目标变量获得更新)。①阻塞赋值是一种理想化的数据传输,赋值立即发生,不存在延时。②执行阻塞赋值时,先计算驱动表达式的值,然后即刻完成赋值,目标变量立即获得更新,且在此过程中其他同类赋值语句必须停止工作,即所谓“阻塞”。③阻塞赋值语句的执行类似于软件语言语句的执行,即具有顺序执行的特点。阻塞赋值语句的先后顺序将直接影响综合的结果。④在过程中,允许对同一目标变量进行多次赋值和驱动,“=”左边目标变量的值将随赋值语句前后顺序的运算而改变。 非阻塞赋值语句的执行过程可以分成三步:计算驱动表达式的值;延时δ时间;完成赋值(目标变量获得更新)。①非阻塞赋值比较接近实际电路的运行,从综合的角度考虑到电路的延时性和并行性。②执行非阻塞赋值时,先计算驱动表达式的值(理论上立即完成无需耗时),随后启动一个δ延时器(δ延时时间就是过程的运行时间),延时时间到(过程执行结束),此时才完成赋值,目标变量才被更新。③延时时间段允许执行其他同类赋值语句,即所谓“非阻塞”。由于其他同类赋值语句驱动表达式的运算也不花费时间,所以所有语句的延时起始时刻和延时时间长短是相同的,延时时间结束,所有语句的目标变量同时被更新,可以理解成赋值语句并行执行。④非阻塞赋值语句的并行执行可以理解成:首先按顺序计算“<=”右侧表达式的值,然后经过δ延时,<=左侧的目标变量同时获得更新值(同时完成赋值)。⑤在过程中,允许对同一目标变量进行多次赋值或驱动(作为并行语句的连续赋值语句不允许这种现象),被赋值目标变量接受最接近过程结束的那一个驱动源数据。⑥过程启动后,所有非阻塞和阻塞赋值语句,都必须在一个δ延时中完成,其中阻塞赋值在δ延时前已按顺序完成所有赋值,但非阻塞赋值这时刚进入赋值的第一步,且必须在δ延时后同时完成赋值。⑦如果有两个过程,一个过程中全部是阻塞式赋值,一个过程中全部是非阻塞式赋值,它们的执行周期是相同的,不会有谁比谁更快的现象。 6.简述if语句的几种主要结构 答:①if(条件表达式) begin 语句块;end ②if(条件表达式) begin 语句块1;end else begin 语句块2;end ③if(条件表达式1) begin 语句块1;end else if(条件表达式2) begin 语句块2;end … else if(条件表达式n) begin 语句块n;end else begin 语句块n+1;end 7.简述Moore型和Mealy型状态机的区别 答:Mealy型状态机的输出是当前状态和所有输入信号的函数,它的输出是在输入变化后立即发生的,不依赖时钟的同步。Moore型状态机的输出则仅为当前状态的函数,这类状态机在输入发生变化时还必须等待时钟的到来,时钟状态发生变化时才导致输出的变化,所以比Mealy机要多等待一个时钟周期。
1.8选1数据选择器 module MUX81a(a,b,c,d,e,f,g,h,s2,s1,s0,y); input a,b,c,d,e,f,g,h,s2,s1,s0; output y; reg y; always @(a,b,c,d,e,f,g,h,s2,s1,s0) begin : MUX81 case({s2,s1,s0}) 3'b000:y<=a; 3'b001:y<=b; 3'b010:y<=c; 3'b011:y<=d; 3'b100:y<=e; 3'b101:y<=f; 3'b110:y<=g; 3'b111:y<=h; default:y<=a; endcase end endmodule module MUX81a(a,b,c,d,e,f,g,h,s2,s1,s0,y); input a,b,c,d,e,f,g,h,s2,s1,s0; output y; reg [2:0] sel; reg y; always @(a,b,c,d,e,f,g,h,sel) begin sel={s2,s1,s0}; if(sel==0) y=a; else if(sel==1) y=b; else if(sel==2) y=c; else if(sel==3) y=d; else if(sel==4) y=e; else if(sel==5) y=f; else if(sel==6) y=g; else y=h; end endmodule
2.一位全加器 module h_adder(a,b,so,co); input a,b; output so,co; assign {co,so}=a+b; endmodule module or2a(a,b,c); output c; input a,b; assign c=a|b; endmodule module f_adder(ain,bin,cin,cout,sum); output cout,sum; input ain,bin,cin; wire e,d,f; h_adder u1(ain,bin,e,d); h_adder u2(.a(e),.so(sum),.b(cin),.co(f)); or2a u3(.a(d),.b(f),.c(cout)); endmodule