版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
思考与练习2.1VerilogHDL模块由哪些主要部分组成?各部分的主要作用是什么?解答:VerilogHDL模块由模块声明、端口定义、内部线网/变量定义和功能描述等多个部分构成。其基本结构定义如下:module模块名(端口列表);//模块声明//端口定义input[数据类型][位宽]输入端口列表;output[数据类型][位宽]输出端口列表;inout[数据类型][位宽]双向端口列表;//参数定义parameter/localparam参数名,…;//内部线网/变量定义wire[位宽]线网名,…;reg[位宽]变量名,…;//函数与任务声明function[位宽]函数名;...;endfunctiontask任务名;...;endtask//模块功能描述assign线网名=函数表达式;//数据流描述always/initial过程语句块;//行为描述调用模块名实例名(端口关联列表);//结构描述endmodule其中括号“[]”表示其中的内容可选的。2.2VerilogHDL为线网/变量定义了哪几种基本取值?各具有什么含义?4位线网/变量共有多少种取值组合?解答:VerilogHDL为线网/变量定义了0、1、x/X和z/Z共4种基本取值,其中0表示数字0、低电平或者为假;1表示数字1、高电平或者为真;x表示未知,z表示高阻。2.3VerilogHDL定义了哪几种基本数据类型?在连续赋值语句中,被赋值的对象必须定义为哪种数据类型?在过程赋值语句中,被赋值的对象必须定义为哪种数据类型?解答:VerilogHDL定义了线网和变量两种数据类型。在连续赋值语句中,被赋值的对象必须定义为线网类型,而在过程赋值语句中,被赋值的对象必须定义为变量类型。2.4VerilogHDL有哪几种功能描述方式?每种描述方式各什么特点?解答:VerilogHDL有三种功能描述方式:数据流描述、行为描述和结构描述。数据流描述方式应用函数表达式或者应用操作符和运算符来描述模块的逻辑功能。行为描述以过程语句为单位,在过程体内部应用条件语句、分支语句和循环语句和操作符描述模块的行为特性,不考虑具体的实现方法。结构描述应用例化语句,描述系统的基元、用户设计好的功能模块或者IP之间的连接关系。2.5数据流方式应用什么语句描述模块的逻辑功能?用数据流方式描述2选一数据选择器,写出完整的模块代码。解答:数据流方式应用连续赋值语句assign描述模块的逻辑功能。用数据流描述2选1数据选择器的Verilog模块代码参考如下:moduleMUX4to1(inputd0,d1;//2路数据inputsel;//一位地址outputwirey//输出);//数据流描述assigny=sel?d1:d0;//2选1endmodule2.6行为方式应用什么语句描述模块的逻辑功能?用行为方式描述2选一数据选择器,写出完整的模块代码。解答:行为方式应用过程语句always描述模块的逻辑功能。用行为方式描述2选1数据选择器的模块代码参考如下:moduleMUX2to1(y,d0,d1,sel);inputd0,d1,sel;outputregy;//行为描述always@(d0,d1,sel)if(!sel)y=d0;elsey=d1;endmodule2.7结构方式应用什么语句描述模块的结构?用结构方式描述2选一数据选择器,写出完整的模块代码。解答:结构方式应用例化语句描述模块的逻辑功能。用结构方式描述2选1数据选择器的模块代码参考如下:moduleMUX2to1(y,d0,d1,sel);inputd0,d1,sel;outputregy;//内部线网定义wirensel,prod1,prod2;//结构描述not(nsel,sel);and(prod1,d0,nsel);and(prod2,d1,sel);or(y,prod1,prod2);endmodule2.8在模块例化语句中,端口关联描述“.clk(sys_clk)”中哪个是例化模块的端口名?哪个是实例模块的端口名?解答:端口关联描述“.clk(sys_clk)”中括号外的标识符是例化模块的端口名,括号内标识符是实例模块的端口名。2.9过程赋值语句中阻塞赋值方式和非阻塞赋值方式的本质区别是什么?举例说明其应用差异。解答:阻塞赋值是指过程体内部的赋值语句按照书写的顺序执行。在前一条赋值语句执行结束之前,后一条语句被阻塞,不能执行。只有前一条语句赋值完成后,后一条语句才能被执行。非阻塞赋值是指过程体内部的所有赋值语句同时执行,与语句的书写顺序无关,即后一条赋值语句的执行不受前一条赋值语句的影响。阻塞赋值应用举例如下:moduleblocking_demo(din,clk,q1,q2);inputwiredin,clk;outputregq1,q2;always@(posedgeclk)beginq1=din;q2=q1;endendmodule对于上述阻塞赋值方式,当时钟脉冲clk上升沿到来时,首先执行赋值语句“q1=din”,执行结束时q1得到了din的值,然后再执行赋值语句“q2=q1”,执行结束时q2得到了q1的值。所以两条语句执行结束后,q2和q1都得到了din的值,因而会综合出图2-1所示的两位存储器,而且存储数据完全相同。图1阻塞赋值综合结果非阻塞赋值应用举例如下:modulenon_blocking_demo(din,clk,q1,q2);inputdin,clk;outputregq1,q2;always@(posedgeclk)beginq1<=din;q2<=q1;endendmodule对于上述非阻塞赋值语句,当时钟脉冲clk上升沿到来时,赋值语句“q1<=din”和“q2<=q1”同时执行,即q1在得到din值的同时,q2得到了q1原来的值,因而会综合出图2-2所示的两位移位寄存器。图2非阻塞赋值综合结果2.10结合表2-5,说明哪些运算符和操作符的结果是1位的。解答:在运算符和操作符中,逻辑运算符、缩位运算符,等式运算符和关系运算符的结果是一位的。2.11VerilogHDL定义了几种逻辑运算符?定义了几种位操作符?比较并说明逻辑运算符和位操作符的应用差异。解答:VerilogHDL定义了与、或、非3种逻辑运算符,定义了与、或、非、异或和同或5种位操作符。逻辑运算符和位操作符的应用要点:(1)逻辑运算的结果是1位的,位操作的结果可以是多位,也可以是1位;(2)当位操作的两个操作数都是1位时,位操作和逻辑运算的效果是相同的。2.12用VerilogHDL定义以下线网、变量或者常数:(1)8位寄存器变量qtmp,并初值为-2;解答:reg[7:0]qtmp=-2;(2)16位整数变量xdata;解答:integerxdata[15:0];内部参数S1、S2、S3和S4,取值分别为4'b0001、4'b0010、4'b0100和4'b1000;解答:localparamS1=4'b0001,S2=4'b0010,S3=4'b0100,S4=4'b1000;容量为1024×10位的存储器sin_rom;解答:reg[9:0]sin_rom[0:1023];值为16的参数DATA_BUS_SIZE。解答:parameterDATA_BUS_SIZE=16;2.13阅读下述VerilogHDL代码,分析运算结果,并将答案填入相应的括号中。reg[3:0]dat_a;reg[5:0]dat_b;assigndat_a=4'b1101;assigndat_b=6'b110100;dat_a&dat_b=();dat_a&&dat_b=();~dat_a=();&dat_b=();{dat_a,dat_b}=();dat_a>>1=();dat_b<<1=();解答:dat_a&dat_b=(6'b000100);dat_a&&dat_b=(1'b1);~dat_a=(4'b0010);&dat_b=(1'b0);{dat_a,dat_b}=(10'b1101110100);dat_a>>1=(4'b0110);dat_b<<1=(6'b101000);2.14阅读表题2.14中的初始化语句。说明两组代码中每条语句的仿真执行时刻各为多少?仿真结束后,每个变量的值分别为多少?表题2.14初始化语句第一组第二组initialbegina=1'b0;b=1'b0;c=1'b1;#10b=1'b1;#5c=1'b0;#15d={a,b,c}endinitialbegina=1'b0;b=1'b0;c=1'b1;b<=#101'b1;c<=#51'b0;d<=#15{a,b,c}end解答:对于第一组代码,变量a的仿真执行时刻为0;变量b的仿真执行时刻分别为0和10;变量c的仿真执行时刻分别为0和15;变量d仿真执行时刻为30;对于第二组代码,变量a的仿真执行时刻为0;变量b的仿真执行时刻分别为0和10;变量c的仿真执行时刻分别为0和5;变量d仿真执行时刻为15;变量a、b、c、d仿真执行时刻分别为0、10、5、15;2.15设使能信号enable的位宽为1,y和d的位宽均为8,说明代码“assigny=(enable)?d:8'bz”描述的是什么功能电路?解答:代码“assigny=(enable)?d:8'bz”描述8位三态锁存器,d为输入,y为输出,enable为三态锁存信号。enable为1时输出为d,为0时输出为高阻状态。2.16异步复位和同步复位的动作特点有何不同?如何用always过程语句描述具有异步复位和同步复位的D触发器?写出相应的描述代码。解答:异步复位与时钟无关,其中作用时刻和恢复时间不受时钟的控制,当复位信号有效时,能够立即将触发器复位。同步复位受时钟的控制。当复位信号有效时,只有等到下一次时钟脉冲的有效沿到来后,才能将触发器复位。描述低电平异步复位、上升沿工作的边沿D触发器的Verilog代码参考如下:moduledff_async_rst(clk,rst_n,d,q);inputclk,rst_n,d;outputregq;//功能描述always@(posedgeclkornegedgerst_n)if(!rst_n)//复位信号有效q<=1'b0;elseq<=d;endmodule描述低电平同步复位、上升沿工作的边沿D触发器的Verilog代码参考如下:moduledff_sync_rst(clk,rst_n,d,q);inputclk,rst_n,d;outputregq;//功能描述always@(posedgeclk)if(!rst_n)q<=1'b0;elseq<=d;endmodule2.17参考例2-8,描述具有同步复位功能的4位二进制计数器。解答:描述具有同步复位功能的4位二进制计数器的参考代码如下:modulecnt4b(clk,rst_n,q);inputclk,rst_n;outputreg[3:0]q;//功能描述always@(posedgeclk)if(!rst_n)//复位信号低电平有效q<=4'b0000;elseq<=q+1'b1;endmodule2.18参考例2-9,应用条件语句描述8线-3线优先编码器。解答:应用条件语句描述8线-3线优先编码器的Verilog参考代码如下:moduleprior_encoder(i_n,y);input[7:0]i_n;//4路高、低电平信号outputreg[1:0]y;//两位编码输出//功能描述always@(i_n)if(~i_n[7])y=3'b111;elseif(~i_n[6])y=3'b110;elseif(~i_n[5])y=3'b101;elseif(~i_n[4])y=3'b100;elseif(~i_n[3])y=3'b011;elseif(~i_n[2])y=3'b010;elseif(~i_n[1])y=3'b001;elsey=3'b000;endmodule2.19参考例2-11,应用分支语句描述3线-8线译码器。解答:moduledecoder_3to8(en,bincode,y);inputen;input[2:0]bincode;outputreg[7:0]y;//行为描述always@(enorbincode)if(en)case(bincode)3'b000:y=8'b00000001;3'b001:y=8'b00000010;3'b010:y=8'b00000100;3'b011:y=8'b00001000;3'b100:y=8'b00010000;3'b101:y=8'b00100000;3'b110:y=8'b01000000;3'b111:y=8'b10000000;default:y=8'b10000000;endcaseelsey=8'b10000000;endmodule2.20参考例2-12,应用分支语句描述8线-3线优先编码器。解答:moduleprior_encoder(i,y);input[7:0i_n;//8路高、低电平信号outputreg[2:0]y;//两位编码输出//行为描述always@(i_n)casex(i_n)8'b0???_????:y=3'b110;8'b10??_????:y=3'b110;8'b110?_????:y=3'b101;8'b1110_????:y=3'b100;8'b1111_0???:y=3'b011;8'b1111_10??:y=3'b010;8'b1111_110?:y=3'b001;default:y=3'b000;endcaseendmodule2.21已知半加器的真值表、逻辑函数表达式和逻辑图分别如图题21(a)~(c)所示,分别用行为描述、数据流描述和基元例化方式描述半加器。真值表(b)逻辑函数式(c)逻辑图图题2.21半加器解答:应用行为描述方式:modulehalf_adder(a,b,s,co);inputa,b;outputregs,co;always@(a,b)case({a,b})2'b00:s=0;2'b01:s=1;2'b00:s=1;2'b00:s=0;default:s=0;endcasealways@(a,b)case({a,b})2'b00:co=0;2'b01:co=0;2'b00:co=0;2'b00:co=1;default:co=0;endcaseendmodule应用数据流描述方式:modulehalf_adder(a,b,s,co);inputa,b;outputwires,co;assigns=a^b;assignco=a&&b+(a||b)&&ci;endmodule应用基元例化方式:modulehalf_adder(a,b,s,co);inputa,b;outputwires,co;xor(s,a,b);and(co,a,b);endmodule2.22已知全加器的真值表、逻辑函数表达式和逻辑图分别如图题22(a)~(c)所示,分别用行为描述、数据流描述和结基元例化方式描述全加器。(a)真值表(b)函数式(c)逻辑图图题2-22全加器解答:应用行为描述方式:modulefull_adder(a,b,ci,s,co);inputa,b,ci;outputregs,co;always@(a,b,ci)case({a,b,ci})3'b000:s=0;3'b001:s=1;3'b010:s=1;3'b011:s=0;3'b100:s=1;3'b101:s=0;3'b011:s=0;3'b111:s=1;default:s=0;endcasealways@(a,b,ci)case({a,b,ci})3'b000:co=0;3'b001:co=0;3'b010:co=0;3'b011:co=1;3'b100:co=0;3'b101:co=1;3'b011:co=1;3'b111:co=1;default:co=0;endcaseendmodule应用数据流描述方式:modulefull_adder(a,b,ci,s,co);inputa,b,ci;outputwires,co;assigns=a^b^ci;assignco=a&&b+(a||b)&&ci;endmodule应用基元例化方式:modulefull_adder(a,b,ci,sum,co);inputa,b,ci;outputwiresum,co;//内部线网定义wiren1,n2,n3;//结构描述xor(n1,a,b);xor(sum,n1,ci);and(n2,a,b);and(n3,n1,ci);or(co,n2,n3);endmodule2.23总线收发器如图题2.23所示。描述总线收发器,写出完整的Verilog模块代码。图题2.23总线收发器解答:描述总线收发器的Verilog代码参考如下:modulebus_transceiver(data_in,data_out,read_en,write_en,bus_data);inputread_en,write_en;inputdata_in;outputdata_out;inoutbus_data;bufif1(bus_data,data_out,write_en);bufif1(data_in,bus_data,read_en);endmodule2.24应用过程语句initial和always描述:(1)初值为高电平,周期为20ns的时钟脉冲clk;解答:initialclk=1'b1;always@()#10clk<=~clk;从0到40ns为低电平,之后一值保持为高电平的复位信号rst_n。解答:initialbeginrst_n=1'b0;#40rst_n=1'b1;end周期为20个时间单位、占空比为30%的时钟信号。解答:always@()begin#0clk=1'b1;#
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026 事业编计算机岗面试易错题集 含答案
- 2026年 财会岗面试高频题集锦 题型分析含解析
- 2026 年事业编财会岗面试高频题题型分析 含答案含解析
- 2026年门店节假日客户接待规范
- 生物专业就业前景对比
- 2026年塔河炼化公司人员招聘考试参考试题及答案详解
- 2026年湘潭市烟草专卖局人员招聘考试题库及答案详解
- 承包商入场安全评估检查表
- 2026年武汉环境投资开发集团有限公司人员招聘考试题库及答案详解
- 电力基建施工现场安全员考试题库
- 广东佛山市南海区狮山镇2026年村(社区)工作人员招聘考试试卷-含答案解析
- 2026年湘潭市总工会招聘事业单位人员招聘易考易错模拟试题(共500题)试卷后附参考答案
- (2026年)纪念红军长征胜利90周年:少年强则国强长征精神伴我行课件
- 2026年6月杭州高二期末英语试题
- GB/T 1345-2026水泥细度检验方法筛析法
- 工程变更管理流程及案例分析
- 新进人员院感培训
- 施工过程各阶段质量安全的保证措施
- 2025年八年级上学期地理早背晚默资料
- 云南民族大学附属高级中学2026届高三上学期联考(一)地理试卷(含解析)
- 云南劳动合同续签协议书
评论
0/150
提交评论