第4章 Verilog HDL设计初步习题

上传人:资****亨 文档编号:133873504 上传时间:2020-05-31 格式:PPT 页数:27 大小:621KB
返回 下载 相关 举报
第4章 Verilog HDL设计初步习题_第1页
第1页 / 共27页
第4章 Verilog HDL设计初步习题_第2页
第2页 / 共27页
第4章 Verilog HDL设计初步习题_第3页
第3页 / 共27页
第4章 Verilog HDL设计初步习题_第4页
第4页 / 共27页
第4章 Verilog HDL设计初步习题_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《第4章 Verilog HDL设计初步习题》由会员分享,可在线阅读,更多相关《第4章 Verilog HDL设计初步习题(27页珍藏版)》请在金锄头文库上搜索。

1、 第4章VerilogHDL设计初步 习题 4 1举例说明 VerilogHDL的操作符中 哪些操作符的运算结果总是一位的 答 if else条件语句 4 2wire型变量与reg型变量有什么本质区别 它们可用于什么类型语句中 答 书上P261 262 9 2VerilogHDL数据类型 reg主要是用于定义特定类型的变量 即寄存器型 Register 变量 或称寄存器型数据类的变量 如果没有在模块中显式地定义信号为网线型变量 Verilog综合器都会将其默认定义为wire型 过程语句always 引导的顺序语句中规定必须是reg型变量 wire型变量不允许有多个驱动源 习题 4 3阻塞赋值和

2、非阻塞赋值有何区别 答 Verilog中 用普通等号 作为阻塞式赋值语句的赋值符号 如y b Verilog中 用普通等号 作为非阻塞式赋值语句的赋值符号 如y b 阻塞式赋值的特点是 一旦执行完当前的赋值语句 赋值目标变量y即刻获得来自等号右侧表达式的计算值 如果在一个块语句中含有多条阻塞式赋值语句 则当执行到其中某条赋值语句时 其他语句将禁止执行 即如同被阻塞了一样 非阻塞式赋值的特点是必须在块语句执行结束时才整体完成赋值操作 非阻塞的含义可以理解为在执行当前语句时 对于块中的其他语句的执行情况一律不加限制 不加阻塞 这也可以理解为 在begin end块中的所有赋值语句都可以并行运行 4

3、 4举例说明 为什么使用条件叙述不完整的条件句能导致产生时序模块的综合结果 答 当CLK发生了电平变化 但是从1变到0 这时无论D是否变化 都将启动过程去执行if语句 但此时CLK 0 无法执行if语句 从而无法执行赋值语句Q D 于是Q只能保持原值不变 这就意味着需要在设计模块中引入存储元件 当CLK没有发生任何变化 且CLK一直为0 而敏感信号D发生了变化 这时也能启动过程 但由于CLK 0 无法执行if语句 从而也就无法执行赋值语句Q D 导致Q只能保持原值 这也意味着需要在设计模块中引入存储元件 在以上两种情况中 由于if语句不满足条件 于是将跳过赋值表达式Q D 不执行此赋值表达式而

4、结束if语句和过程 对于这种语言现象 Velilog综合器解释为 对于不满足条件 跳过赋值语句Q D不予执行 即意味着保持Q的原值不变 保持前一次满足if条件时Q被更新的值 对于数字电路来说 当输入改变后试图保持一个值不变 就意味着使用具有存储功能的元件 就是必须引进时序元件来保存Q中的原值 直到满足if语句的判断条件后才能更新Q中的值 于是便产生了时序元件 moduleLATCH1 CLK D Q outputQ inputCLK D regQ always DorCLK if CLK Q D 当CLK 1时D被锁入Qendmodule 4 5用Verilog设计一个3 8译码器 要求分别用

5、case语句和if else语句 比较这两种方式 4 5用Verilog设计一个3 8译码器 要求分别用case语句和if else语句 比较这两种方式 moduledecoder3 8 G1 Y G2 A G3 inputG1 G2 G3 wireG1 G2 G3 input 2 0 A wire 2 0 A output 7 0 Y reg 7 0 Y regs always A G1 G2 G3 begins G2 G3 if G1 0 Y 8 b1111 1111 elseif s Y 8 b1111 1111 elsecase A 3 b000 Y 8 b11111110 3 b00

6、1 Y 8 b11111101 3 b010 Y 8 b11111011 3 b011 Y 8 b11110111 3 b100 Y 8 b11101111 3 b101 Y 8 b11011111 3 b110 Y 8 b10111111 3 b111 Y 8 b01111111 default Y 8 bxxxxxxxx endcaseendendmodule 4 5用Verilog设计一个3 8译码器 要求分别用case语句和if else语句 比较这两种方式 moduledecoder3 8 G1 Y G2 A G3 inputG1 G2 G3 wireG1 G2 G3 input 2

7、 0 A wire 2 0 A output 7 0 Y reg 7 0 Y regs always A G1 G2 G3 begins G2 G3 if G1 0 Y 8 b1111 1111 elseif s Y 8 b1111 1111 elsebeginif A 3 b000 Y 8 b11111110 elseif A 3 b001 Y 8 b11111101 elseif A 3 b010 Y 8 b11111011 elseif A 3 b011 Y 8 b11110111 elseif A 3 b100 Y 8 b11101111 elseif A 3 b101 Y 8 b11

8、011111 elseif A 3 b110 Y 8 b10111111 elseif A 3 b111 Y 8 b01111111 elseY 8 bxxxxxxxx endendendmodule 测试文件 部分请根据被测试的文件修改modulestimulus reg 2 0 A wire 7 0 Y regG1 G2 G3 decoder3 8DUT G1 Y G2 A G3 initialbegin monitor time A d G1 b G2 b G3 b Y d n A G1 G2 G3 Y end initialbeginG1 1 G2 1 G3 1 A 0 10G2 0

9、G1 0 10G2 0 G1 1 10G2 1 G1 0 G3 0 10G1 0 G1 1 G3 1 10G1 0 G1 0 G3 0 10G1 1 G2 0 G3 0 50A 0 50A 1 50A 2 50A 3 50A 4 50A 5 50A 6 50A 7 50 finish endendmodule 习题 4 6图4 26所示的是双2选1多路选择器构成的电路MUXK 对于其中MUX21A 当s 0和s 1时 分别有y a和y b 试在一个模块结构中用两个过程来表达此电路 答 参考实验1 图4 26含2选1多路选择器的模块 moduleMUXK a1 a2 a3 s0 s1 outy

10、inputa1 a2 a3 s0 s1 outputouty wireouty wiretmp mux21au1 a a2 b a3 s s0 y tmp mux21au2 a a1 b tmp s s1 y outy endmodule 习题 4 7给出1位全减器的VHDL描述 要求 1 首先设计1位半减器 然后用例化语句将它们连接起来 图4 28中h suber是半减器 diff是输出差 s out是借位输出 sub in是借位输入 2 根据图4 27设计1位全减器 3 以1位全减器为基本硬件 构成串行借位的8位减法器 要求用例化语句来完成此项设计 图4 271位全减器 一个二进制半减器设

11、计进行了阐述moduleh suber x y diff s out inputx y outputdiff s out assigndiff x y assigns out x endmodule modulef suber x y sub in diffr sub out 一个二进制全减器顶层设计进行了阐述outputdiffr sub out inputx y sub in wiree d f h suberu1 x y e d h suberu2 x e diff diffr y sub in s out f or2au3 a d b f c sub out endmodule x为被

12、减数 y为减数 sub in为低位的借位 diffr为差 sub out为向高位的借位 习题 习题 4 8给出一个4选1多路选择器的Verilog描述 此器件与图4 1类似 但选通控制端有4个输入 S0 S1 S2 S3 当且仅当S0 0时 Y A S1 0时 Y B S2 0时 Y C S3 0时 Y D moduleMUX41a A B C D S0 S1 S2 S3 Y outputY 定义Y为输出信号inputA B C D inputS0 S1 S2 S3 regY 定义输出端口信号Y为寄存器型变量always A B C S0 S1 S2 S3 begin 块语句起始if S0 0

13、 Y A 当S0 0成立 即 S0 0 1时 Y A elseif S1 0 Y B 当 S1 1 为真 则Y B elseif S2 0 Y C 当 S2 2 为真 则Y C elseif S3 0 Y D 当 S3 3 为真 即Y D end 块语句结束endmodule 4 9把例4 21改成一异步清0 同步时钟使能和异步数据加载型8位二进制加法计数器 例4 21 含有异步清0同步时钟使能和同步数据加载功能的十进制计数器moduleCNT10 CLK RST EN LOAD COUT DOUT DATA inputCLK RST EN LOAD 时钟 时钟使能 复位 数据加载控制信号输入

14、口input 3 0 DATA 4位并行加载数据输入口output 3 0 DOUT 计数数据输出信号口outputCOUT 计数进位输出regCOUT reg 3 0 Q1 assignDOUT Q1 将内部寄存器的计数结果输出至DOUTalways posedgeCLKornegedgeRSTornegedgeLOAD 时序过程beginif RST Q1 0 RST 0时 对内部寄存器单元异步清0elseif LOAD Q1 DATA 当LOAD 0 异步向内部寄存器加载数据elseif EN begin 同步使能EN 1 则允许加载或计数if Q1 9 Q1 Q1 1 当Q1小于9时

15、允许累加elseQ1 4 b0000 否则一个时钟后清0返回初值endendalways Q1 组合电路之过程if Q1 4 h9 COUT 1 b1 当Q1 1001时 COUT输出进位标志1elseCOUT 1 b0 否则 输出进位标志0endmodule 习题 4 10分频方法有多种 最简单的是二分频和偶数分频甚至奇数分频 这用触发器或指定计数模的计数器即可办到 但对于现场实现指定分频比或小数分频率的分频电路的设计就不是很简单了 试对习题4 9的设计稍作修改 将其进位输出COUT与异步加载控制LOAD连在一起 构成一个自动加载型16位二进制数计数器 也即一个16位可控的分频器 给出其Ve

16、rilog表述 并说明工作原理 设输入频率fi 4MHz 输出频率fo 516 5 1Hz 允许误差 0 1Hz 16位加载数值 7744 moduleCNT10 CLK RST EN COUT DOUT DATA inputCLK RST EN 时钟 时钟使能 复位 数据加载控制信号输入口input 3 0 DATA 4位并行加载数据输入口output 3 0 DOUT 计数数据输出信号口outputCOUT 计数进位输出regFULL wireLD reg 3 0 Q1 always posedgeCLKorposedgeLDornegedgeRST 时序过程beginif RST beginQ1 0 FULL 0 endelseif LD beginQ1 DATA FULL 1 endelseif EN beginQ1 Q1 1 FULL 0 endendassignLD Q1 4 B0000 assignDOUT Q1 将内部寄存器的计数结果输出至DOUTassignCOUT FULL 输出进位标志0endmodule moduleCNT16 CLK RST EN COUT D

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号