logo资料库

《verilog_数字系统设计课程》(第二版)思考题答案.pdf

第1页 / 共43页
第2页 / 共43页
第3页 / 共43页
第4页 / 共43页
第5页 / 共43页
第6页 / 共43页
第7页 / 共43页
第8页 / 共43页
资料共43页,剩余部分请下载后查看
绪论
第一部分Verilog数字设计基础
第1章Verilog的基本知识
第2章Verilog语法的基本概念
第3章模块的结构、数据类型、变量和基本运算符号
第4章运算符、赋值语句和结构说明语句
第5章条件语句、循环语句、块语句与生成语句
第6章结构语句、系统任务、函数语句和显示系统任务
第7章调试用系统任务和常用编译预处理语句
第二部分设计和验证部分
第9章VerilogHDL模型的不同抽象级别
第10章如何编写和验证简单的纯组合逻辑
第11章复杂数字系统的构成
第12章同步状态机的原理、结构和设计
第13章设计可综合的状态机的指导原则
第14章深入理解阻塞和非阻塞赋值的不同
第15章较复杂时序逻辑电路设计实践
第16章较复杂时序逻辑电路设计实践
第17章简化的RISC_CPU设计
第18章虚拟器/接口、IP和基于平台的设计方法及其在大型数字系统设计中的作用
后记
Verilog 数字系统设计教程思考题答案 绪 论 1.什么是信号处理电路?它通常由哪两大部分组成? 信号处理电路是进行一些复杂的数字运算和数据处理,并且又有实时响应要 求的电路。它通常有高速数据通道接口和高速算法电路两大部分组成。 2.为什么要设计专用的信号处理电路? 因为有的数字信号处理对时间的要求非常苛刻,以至于用高速的通用处理器 也无法在规定的时间内完成必要的运算。通用微处理器芯片是为一般目的而设计 的,运算的步骤必须通过程序编译后生成的机器码指令加载到存储器中,然后在 微处理器芯片控制下,按时钟的节拍,逐条取出指令分析指令和执行指令,直到 程序的结束。微处理器芯片中的内部总线和运算部件也是为通用目的而设计,即 使是专为信号处理而设计的通用微处理器,因为它的通用性也不可能为某一特殊 的算法来设计一系列的专用的运算电路而且其内部总线的宽度也不能随便的改 变,只有通过改变程序,才能实现这个特殊的算法,因而其算法速度也受到限制 所以要设计专用的信号处理电路。 3.什么是实时处理系统? 实时处理系统是具有实时响应的处理系统。 4.为什么要用硬件描述语言来设计复杂的算法逻辑电路? 因为现代复杂数字逻辑系统的设计都是借助于 EDA 工具完成的,无论电路 系统的仿真和综合都需要掌握硬件描述语言。 5.能不能完全用 C 语言来代替硬件描述语言进行算法逻辑电路的设计? 不能,因为基础算法的描述和验证通常用 C 语言来做。如果要设计一个专 用的电路来进行这种对速度有要求的实时数据处理,除了以上 C 语言外,还须 编写硬件描述语言程序进行仿真以便从电路结构上保证算法能在规定的时间内 完成,并能通过与前端和后端的设备接口正确无误地交换数据。 6.为什么在算法逻辑电路的设计中需要用 C 语言和硬件描述语言配合使用来提 高设计效率? 首先 C 语言很灵活,查错功能强,还可以通过 PLI 编写自己的系统任务, 并直接与硬件仿真器结合使用。C 语言是目前世界上应用最为广泛的一种编程语 言,因而 C 程序的设计环境比 Verilog HDL 更完整,此外,C 语言有可靠地编译 环境,语法完备,缺陷缺少,应用于许多的领域。比较起来,Verilog 语言只是 针对硬件描述的,在别处使用并不方便。而用 Verilog 的仿真,综合,查错等大 部分软件都是商业软件,与 C 语言相比缺乏长期大量的使用,可靠性较差,亦 有很多缺陷。所以只有在 C 语言的配合使用下,Verilog 才能更好地发挥作用。C 语言与 Verilog HDL 语言相辅相成,互相配合使用。这就是即利用 C 语言的完整 性又要结合 Verilog 对硬件描述的精确性,来更快更好地设计出符合性能要求的 天之蓝电子工作室 1
Verilog 数字系统设计教程思考题答案 硬件电路系统,从而来提高效率。 第一部分 Verilog 数字设计基础 第 1 章 Verilog 的基本知识 1.什么是硬件描述语言?它的主要作用是什么? 硬件描述语言是一种用形式化方式来描述数字电路和系统的语言。它的 主要作用是:数字电路系统的设计者利用这种语言可以从上层到下层(从抽象 到具体)逐步描述自己的设计思想,用一系列分层次的模块来表示极其复杂的 数字系统。 2.目前世界上符合 IEEE 标准的硬件描述语言有哪两种?它们各有什么特点? 符合 IEEE 标准的硬件描述语言是 Verilog HDL 和 VHDL 两种。它们的共同 特点是:能够形式化地抽象表示电路的行为和结构;支持逻辑设计中层次与范 围的描述;可借用高级语言的精巧结构来简化电路行为的描述;具有电路仿真 与验证机制以保证设计的正确性;支持电路描述由高层到低层的综合 1 转换硬 件描述与实现工艺无关;便于文档管理;易于理解和设计重用。不同点:Verilog HDL 是一种非常容易掌握的硬件描述语言,而 VHDL 掌握起来就比较困难。 3.什么情况下需要采用硬件描述语言的设计方法? 在对逻辑电路及系统的设计的时间要求很短的情况下需要采用硬件描述语 言的设计方法。 4.采用硬件描述语言设计方法的优点是什么?有什么缺点? 优点是:与工艺无关性。这使得工程师在功能设计,逻辑验证阶段,可以不 必过多考虑门级及工艺实现的具体细节,只需要利用系统设计时对芯片的要求, 施加不同的约束条件,即可设计出实际电路。 缺点是:需要相应的 EDA 工具,而 EDA 工具的稳定性需要进一步的在工程 中提升。 5.简单叙述一下利用 EDA 工具并采用硬件描述语言的设计方法和流程? 采用自顶向下的设计方法:从系统级开始把系统划分为基本单元,然后再把 每个基本单元划分为下一层次的基本单元,一直这样做下去,直到可以直接用 EDA 元件库中的基本元件来实现为止。其基本流程主要由两大主要功能部分组 成:(1)设计开发 即从编写设计文件->综合到布局布线->电路生成这样一序列步 骤。(2)设计验证 也就是进行各种仿真的一序列步骤,如果在仿真过程中发现问 题就返回设计输入进行修改。 5.硬件描述语言可以用哪两种方式参与复杂数字电路的设计? 复杂数字电路的设计和复杂数字电路的仿真验证。 天之蓝电子工作室 2
Verilog 数字系统设计教程思考题答案 7.用硬件描述语言设计的数字系统需要经过哪些步骤才能与具体的电路相对 应? 编写设计文件;功能仿真;优化,布局布线;布线后门级仿真 8.为什么说用硬件描述语言设计的数字逻辑系统下具有很大的灵活性并可以映 射到任何工艺的电路上? 硬件描述语言的设计具有与工艺无关性。这使得工程师在功能设计,逻辑验 证阶段,可以不必过多考 虑门级及工艺实现的具体细节,只需要利用系统设计 时对芯片的要求,施加不同的约束条件,即可设计出实际电路。 9.软核是什么?虚拟器件是什么?它们的作用是什么? 把功能经过验证的,可综合的,实现后电路结构总门数在 5000 门以上的 Verilog HDL 模型称为软核。而把由软核构成的器件称为虚拟器件。 作用:大大缩短设计周期,加快复杂电路的设计。 10.集成电路行业中 IP 的含义是什么?固核是什么?硬核是什么?与软核相比它 们各有什么特点?各适合于什么场合? 在集成电路行业中 IP 是知识产权(Intellectual Property)的含义。把在某一现 场可编程门阵列器件上实现的经验证是正确的,总门数在 5000 门以上的电路结 构编码文件称为固核。把在某一专用集成电路工艺的器件上实现的经验证时正确 的总门数在 5000 门以上的门电路结构版图掩膜称为硬核。 在工具实现手段和工艺技术尚未确定的逻辑设计阶段,IP 核具有很大的灵 活性,很容易借助 EDA 工具与其他外部逻辑结合为一体。相比之下固核和硬核 与其他外部逻辑结合为一体的灵活性要差很多。 11.简述 Top_Down 设计方法和硬件描述语言的关系? Top_Down 的设计方法是首先从系统设计入手,从顶层进行功能划分和结 构设计。系统的总仿真是顶层进行功能划分的总要环节,而该过程需要采用硬件 描述语言的方法。 12.System Verilog 与 Verilog 有什么关系?适合于何种设计? System Verilog 是 Verilog 语言的拓展和延伸。Veril 适合系统级,算法级,寄 存器级,逻辑级,门级,电路开关级设计而 System Verilog 更适合于可重用的可 综合 IP 和可重用的验证用 IP 设计,以及特大型基于 IP 的系统级设计和验证。 天之蓝电子工作室 3
Verilog 数字系统设计教程思考题答案 第 2 章 Verilog 语法的基本概念 1.Verilog 语言有什么作用? ·可描述顺序执行和并行执行的程序结构; ·用延迟表达式或事件表达式来明确地控制过程的启动时间; ·通过命名的事件来触发其他过程里的激活行为或停止行为; ·提供了条件如 if-else,case 等循环程序结构; ·提供了可带参数且非零延续时间的任务程序结构; ·提供了可定义新的操作符的函数结构; ·提供了用于建立表达式的算术运算符,逻辑运算符,位运算符; ·Verilog HDL 语言作为一种结构化的语言非常适用于门级和开光级的模型设 计; ·提供了一套完整的表示组合逻辑的基本元件的原话; ·提供了双向通路和电阻器件的原话; ·可建立 MOS 器件的电荷分享和电荷衰减动态模型; ·Verilog HDL 的构造性语句可以精确地建立信号的模型; 2.构成模块的关键词是什么? module,endmodule 3.为什么说可以用 Verilog 构成非常复杂的电路结构? 因为 Verilog 可描述顺序执行和并行执行的程序结构;用延迟表达式或事件表 达式来明确地控制过程的启动时间;通过命名的事件来触发其他过程里的激活行 为或停止行为;提供了条件如 if-else,case 等循环程序结构;提供了可带参数且 非零延续时间的任务程序结构;提供了可定义新的操作符的函数结构;提供了用 于建立表达式的算术运算符,逻辑运算符,位运算符;Verilog HDL 语言作为一 种结构化的语言非常适用于门级和开光级的模型设计;提供了一套完整的表示组 合逻辑的基本元件的原话;提供了双向通路和电阻器件的原话;可建立 MOS 器 件的电荷分享和电荷衰减动态模型;Verilog HDL 的构造性语句可以精确地建立 信号的模型。 4.为什么可以用比较抽象的描述来设计具体的电路结构? 因为有可以用比较抽象描述设计电路结构的语言,而这种语言是适合数字系 统设计的语言。 5.是否任意抽象的符合语法的 Verilog 模块都可以通过综合工具转变为电路结 构? 不能。要符合语法,还符合一些基本规则的 Verilog 模块才可以通过综合工 具转变为电路结构。 6.什么叫综合? 天之蓝电子工作室 4
Verilog 数字系统设计教程思考题答案 通过综合工具把行为级描述的模块通过逻辑网表自动转化为门级形式的模 块叫综合。 7.综合是由什么工具来完成的? EDA 工具来完成综合的。 8.通过综合产生的是什么?产生的结果有什么用处? 产生的是由与门,或门和非门组成的加法器,比较器等组合逻辑。产生的模 块很容易与某种工艺的基本元件逐一对应起来,再通过布局布线工具自动地转变 为某种工具工艺的电路布线结构。 9.仿真是什么?为什么要进行仿真? 仿真是对电路模块进行动态的全面测试。通过观测被测试模块的输出信号是 否符合要求可以调试和验证逻辑系统的设计和结构准确与否,并发现问题及时修 改。 10.仿真可以在几层面上进行?每个层面的仿真有什么意义? 分别为;前仿真,逻辑网表仿真,门级仿真和布线后仿真; 前仿真,逻辑网表仿真,门级仿真;可以调试和验证逻辑系统的设计和结构准 确与否,并发现问题及时修改。 布线后仿真:分析设计的电路模块的运行是否正常。 11.模块的端口是如何描述的? 用“.”表示被引用模块的端口。 12.在引用实例模块的时候,如何在主模块中连接信号线? 用小括号中来表示本模块中与之连接的模块。 13.如何产生连续的周期性测试时钟? 用 always 语句来产生连续的周期性测试模块。 14.如果不用 initial 块,能否产生测试时钟? 不能,没有 initial 块,就不知道时钟信号的初始值 15.从本讲中的简单例子,是否能明白 always 块与 initial 块有什么不同? Initial 块只执行一次,而 always 块执行无数次。 16.为什么说 Verilog 可以用来设计数字逻辑电路和系统? 因为 Verilog 可描述顺序执行和并行执行的程序结构;用延迟表达式或事件表 达式来明确地控制过程的启动时间;通过命名的事件来触发其他过程里的激活行 为或停止行为;提供了条件如 if-else,case 等循环程序结构;提供了可带参数且 非零延续时间的任务程序结构;提供了可定义新的操作符的函数结构;提供了用 于建立表达式的算术运算符,逻辑运算符,位运算符;Verilog HDL 语言作为一 种结构化的语言非常适用于门级和开光级的模型设计;提供了一套完整的表示组 合逻辑的基本元件的原话;提供了双向通路和电阻器件的原话;可建立 MOS 器 天之蓝电子工作室 5
Verilog 数字系统设计教程思考题答案 件的电荷分享和电荷衰减动态模型;Verilog HDL 的构造性语句可以精确地建立 信号的模型。 第 3 章 模块的结构、数据类型、变量和基本运算符号 1.模块由几个部分组成? 由描述接口和描述逻辑功能两部分组成。 2.端口分为几种? 三种:输出口,输入口,输入/输出口 3.为什么端口要说明信号的位宽? 因为如果不说明信号的位宽可能会在信号发生改变时发生错误,不容易看出接收 到的信号的数据宽度,就很难进行数据的处理。 4.能否说模块相当于电路图中的功能模块,端口相当于功能模块的引脚? 可以那样说,每个模块都有特定的功能,而功能的实现就必须依靠具体的电路得 以实现,端口是信号传递的通道,可以说是功能模块的引脚。 5.模块中的功能描述可以由哪几类语句或语句块组成?它们出现的顺序会不会 影响功能的描述? 用 assign 语句声明,用实例元件,用 always 块。它们出现的顺序不会影响到功 能的描述。 6.这几类描述中哪一种直接与电路结构有关? 用实例元件直接与电路结构有关。 7.最基本的 Verilog 变量有哪几种类型? wire 型、reg 型、memory 型 8.reg 型和 wire 型变量的差别是什么? reg 型变量是寄存器型变量,wire 型变量是连线型变量。两者根本性的差别在于 reg 型变量有个寄存器来存放变量,这个值只有变量发生改变时才会改变否则保 证原来的值不变,wire 型变量的值不是确定的值。 9.由连续赋值语句(assign)赋值的变量能否是 reg 类型的? 可以是 reg 类型的变量。 10.在 always 模块中被赋值的变量能否是 wire 类型的?如果不能是 wire 类型,那 么必须是什么类型的?它们表示的一定是实际的寄存器吗? 不能。必须是 reg 类型的变量,它们表示不一定是实际的寄存器。 11.参数类型的变量有什么用处? 参数类型的变量的好处是可以提高程序的可读性和可维护性。 12.Verilog 语法规定的参数传递和重新定义功能有什么直接的应用价值? 天之蓝电子工作室 6
Verilog 数字系统设计教程思考题答案 可以用于定义延迟时间和变量宽度。 13.逻辑比较运算符小于等于“<=”和非阻塞赋值大于等于“<=”的表示是完全 一样的,为什么 Verilog 在语句解释和编译时不会搞错? 因为逻辑比较时“<=”两边是两个操作数,此时“<=”是双目运算符,而在非 阻塞赋值时“<=”的右边是操作数,此时“<=”单目运算符。 14.是否可以说实例引用的描述实际上就是严格意义上的电路结构描述? 不能实例引用的描述是在门级电路上加以描述的,和严格意义上的电路结构描述 还是有点差距的。 天之蓝电子工作室 7
Verilog 数字系统设计教程思考题答案 第 4 章 运算符、赋值语句和结构说明语句 1.逻辑运算符与按位逻辑运算符有什么不同,它们各在什么场合使用? 用逻辑运算符运算时是两个操作数进行逻辑运算,而按位逻辑运算符运算时是两 个操作数对应的每一位进行逻辑运算。逻辑运算符多用于条件的判断,按位逻辑 运算符用于信号的运算和检测。 2.指出两种逻辑等式运算符的不同点,解释书上的真值表。 两种逻辑运算符有很大的区别。”===“要求两个比较数完全一样,无论高阻还 是未知,只要每位完全相同即可;而“==”只有在两个操作数每位都已知即 1 或 0,在这种前提下两个操作数每位相同结果才为真,如果不是在这个前提那么 其结果始终为 x; 3.拼接符的作用是什么?为什么说合理地使用拼接符可以提高程序的可读性和可 维护性?拼接符表示的操作其物理意义是什么? 拼接符的作用是把两个或多个信号的某些位拼接起来进行运算操作。因为借助拼 接符可以用一个符号名来表示由多位信号组成的复杂信号。其物理意义是将多个 信号结合成一个信号。 4.如果都不带时间延迟,阻塞和非阻塞赋值有什么不同?举例说明它们的不同 点? 阻塞和非阻塞赋值的区别在阻塞是顺序执行而非阻塞是并行执行。 以下面的语句举例 非阻塞赋值 always@(posedge clk) begin b<=a; c<=b; end 阻塞赋值 always@(posedge clk) begin b=a; c=b; end 两种不同的赋值方式结果是不同的,非阻塞赋值 b<=a;c<=b;两条语句是同时执行 的,而阻塞赋值 b=a;c=b;两条语句先执行 b=a 后执行 c=b. 5.举例说明顺序块和并行块的不同? 天之蓝电子工作室 8
分享到:
收藏