2-Verilog语言快速入门强烈推荐.ppt课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《2-Verilog语言快速入门强烈推荐.ppt课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Verilog 语言 快速 入门 强烈推荐 ppt 课件
- 资源描述:
-
1、1Verilog设计快速入门设计快速入门 。2内部信号声明内部信号声明assign语句语句底层模块或门原语底层模块或门原语调用调用(包括生成块包括生成块)Initial或或always语句块语句块任务和函数定义任务和函数定义module 模块名模块名 (端口列表端口列表);端口信号声明端口信号声明;参数声明参数声明;endmodulespecify 块块(路径延迟路径延迟)Verilog模块结构模块结构说明:说明:n浅色部分用得较少;浅色部分用得较少;n常用语句只有三种:常用语句只有三种:nassign语句语句nalways语句语句n底层模块调用语句底层模块调用语句n三种语句顺序无关三种语句顺
2、序无关n除开始的除开始的module模模块名块名和结束的和结束的endmodule必须写必须写外,其他都是可选的。外,其他都是可选的。功能描述部分功能描述部分模块说明部分模块说明部分。3Verilog模块结构模块结构例例1:二选一数据选择器的描述:二选一数据选择器的描述二选一数据选择器的结构之一二选一数据选择器的结构之一二选一数据选择器的符号二选一数据选择器的符号设设a、b、s波形已知,可得波形已知,可得y波形:波形:。4Verilog模块结构模块结构2选选1多路选择器的多路选择器的Verilog描述描述内部信号内部信号声明声明assign语句语句底层模块或底层模块或门原语调用门原语调用alw
3、ays语句块语句块module 模块名模块名 (端口列表端口列表); 端口信号声明端口信号声明; 参数声明参数声明;endmoduleabsyMUX21a。5Verilog程序结构程序结构例例2:边沿:边沿D触发器的触发器的Verilog描述描述内部信号内部信号声明声明assign语句语句底层模块或底层模块或门原语调用门原语调用always语句块语句块module 模块名模块名 (端口列表端口列表); 端口信号声明端口信号声明; 参数声明参数声明;endmodule。6Verilog模块结构模块结构1模块说明部分模块说明部分 module 模块名模块名 (端口列表端口列表); 端口信号声明端口
4、信号声明; 参数声明参数声明;l 模块名是指电路的名字,由用户指定,最好与文件名一致(特别是在模块名是指电路的名字,由用户指定,最好与文件名一致(特别是在Quartus II软件中调试时);软件中调试时);l 端口列表是指电路的输入端口列表是指电路的输入/输出信号名称列表,信号名由用户指定,各名输出信号名称列表,信号名由用户指定,各名称间用逗号隔开;称间用逗号隔开;l 端口信号声明是要说明端口信号的输入输出属性、信号的数据类型,以及端口信号声明是要说明端口信号的输入输出属性、信号的数据类型,以及信号的位宽;输入输出属性有信号的位宽;输入输出属性有input,output,inout三种,信号的
5、数三种,信号的数据类型常用的有据类型常用的有wire和和reg两种;信号的位宽用两种;信号的位宽用n1:n2表示;同一类表示;同一类信号之间用逗号隔开;信号之间用逗号隔开;l 参数声明要说明参数的名称和初值参数声明要说明参数的名称和初值输入输出属性输入输出属性 数据类型数据类型 位宽位宽 名称名称 parameter 数据类型数据类型 参数名参数名 = 初值初值。7例:例:module full_adder (A,B,CIN,S,COUT); input 3:0 A,B; input CIN; output reg 3:0 S; output COUT;位宽如果不做说明的话,默认是位宽如果不做
6、说明的话,默认是1位;位;数据类型不做说明的话,默认是数据类型不做说明的话,默认是wire型的。型的。S位宽为位宽为4位,对应信号为位,对应信号为S3、S2、S1、S0根据模块说明部分,我们可以得出电路符号根据模块说明部分,我们可以得出电路符号ABCINSfull_adderCOUT。82. assign语句语句内部信号内部信号声明声明assign语句语句底层模块或底层模块或门原语调用门原语调用always语句块语句块module 模块名模块名 (端口列表端口列表); 端口信号声明端口信号声明;endmoduleassign语句称作连续赋值语句语句称作连续赋值语句assign 赋值目标赋值目标
7、 = 表达式表达式例:例:特点:特点:l之所以称为连续赋值语句是指其总是处于激活状态,只之所以称为连续赋值语句是指其总是处于激活状态,只要表达式中的操作数有变化,立即进行计算和赋值。要表达式中的操作数有变化,立即进行计算和赋值。(与连续赋值语句对应的另一种语句称为过程赋值语句)(与连续赋值语句对应的另一种语句称为过程赋值语句)l赋值目标必须是赋值目标必须是wire型的,型的,wire表示电路间的连线。表示电路间的连线。ayAbyassign y=a;assign y=a&b;基本格式:基本格式:。92. assign语句语句例:例:assign M=B|C; assign Y=A&M; MM和
8、和Y都必须是都必须是wire型的型的。102. assign语句语句Verilog具有丰富的表达式运算功能,可用于具有丰富的表达式运算功能,可用于assign语句语句详见夏宇闻教材第详见夏宇闻教材第6章,自学。章,自学。(1) 算术型算术型*乘法乘法/除法除法+加法加法-减法减法% 求余求余* 求幂求幂例例:Y=5%2;Y=2*3;求余,结果为求余,结果为1求幂,结果为求幂,结果为8说明说明l 加减乘除、求幂的操作数可以是实数也可以是整数,加减乘除、求幂的操作数可以是实数也可以是整数,求余运算的操作数只能是整数。求余运算的操作数只能是整数。l 求余运算结果取第一个操作数的符号;求余运算结果取第
9、一个操作数的符号;。11(2) 逻辑型逻辑型!逻辑非逻辑非& 逻辑与逻辑与|逻辑或逻辑或例例:Y=! (32) Y=(26);Y=(26);Y=(2大于大于= 大于等于大于等于2) Y=(3=2);Y=(3=2);Y=(3右移右移 算术右移算术右移 1;Y= 4sb1001 1; 结果为结果为0100结果为结果为1100说明说明l 移位运算的操作数是移位运算的操作数是1位或多位二进制数;位或多位二进制数;l 向左或向右移向左或向右移n位;位;l 只有对有符号数的算术右移自动补符号位;只有对有符号数的算术右移自动补符号位;l 其他移位均自动补其他移位均自动补0。操作数操作数 移位符移位符 n;格
10、式格式。17(8) 拼接复制运算符拼接复制运算符拼接拼接 复制拼接复制拼接例例:Y= 4b1001, 2b11;Y= 42b01; Y= 42b01, 2b11; 结果为结果为100111结果为结果为01010101说明说明l将多个操作数拼接起来;将多个操作数拼接起来;l将操作数复制将操作数复制n遍并拼接起来;遍并拼接起来;l可以组合使用。可以组合使用。操作数操作数1, 操作数操作数2, 格式格式n操作数操作数1, 操作数操作数2, 格式格式。18(9) 条件运算符条件运算符? : 用于条件赋值用于条件赋值例例:Y= a ? b : c;Y= s1 ? (s0 ? d3 : d2) : (s0
11、? d1 : d0);如果如果a=1,则,则y=b;如果如果a=0,则,则y=c。如果如果a=x,则,则y=x。说明说明l根据表达式根据表达式1的值,决定运算结果;的值,决定运算结果;l如果表达式如果表达式1值为值为1,则结果等于表达式,则结果等于表达式2;l如果表达式如果表达式1值为值为0,则结果等于表达式,则结果等于表达式3;l如果表达式如果表达式1值为值为x,则结果为,则结果为x;l可以嵌套。可以嵌套。表达式表达式1 ? 表达式表达式2 : 表达式表达式3格式一格式一。19203. always语句块语句块内部信号内部信号声明声明assign语句语句底层模块或底层模块或门原语调用门原语调
12、用always语句块语句块module 模块名模块名 (端口列表端口列表); 端口信号声明端口信号声明;endmodulealways语句块又称过程块语句块又称过程块基本格式:基本格式:always (敏感信号条件表敏感信号条件表) 各类顺序语句;各类顺序语句; 特点:特点:l always语句本身不是单一的有意义的一条语句,而是和下面的语语句本身不是单一的有意义的一条语句,而是和下面的语句一起构成一个语句块,称之为过程块;过程块中的赋值语句称过句一起构成一个语句块,称之为过程块;过程块中的赋值语句称过程赋值语句;程赋值语句;l 该语句块不是总处于激活状态,当满足激活条件时才能被执行,否该语句
13、块不是总处于激活状态,当满足激活条件时才能被执行,否则被挂起,挂起时即使操作数有变化,也不执行赋值,赋值目标值则被挂起,挂起时即使操作数有变化,也不执行赋值,赋值目标值保持不变;保持不变;l 赋值目标必须是赋值目标必须是reg型的。型的。例:例: always (posedge CLK) Q=D;。3. always语句块语句块l激活条件由敏感信号条件表决定,当敏感条件满足时,激活条件由敏感信号条件表决定,当敏感条件满足时,过程块被激活。过程块被激活。敏感条件有两种,一种是边沿敏感,一种是电平敏感。敏感条件有两种,一种是边沿敏感,一种是电平敏感。21电平敏感:电平敏感:(posedge (po
14、sedge 信号名信号名) )边沿敏感:边沿敏感:(negedge (negedge 信号名信号名) )( (信号名列表信号名列表) )信号上升沿到来信号上升沿到来信号下降沿到来信号下降沿到来例:例:(posedge clk)(posedge clk)例:例:(negedge clk)(negedge clk)信号列表中的任一个信号有变化信号列表中的任一个信号有变化例:例:(a,b,c)(a,b,c)当当a,b,ca,b,c中有一个发生变化中有一个发生变化说明说明: : 逗号可以换成逗号可以换成oror例:例:(a or b or c)(a or b or c)3. always语句块语句块。
15、22例:例:always (posedge CLK)always (posedge CLK) Q=D Q=D;当当CLKCLK上升沿到来时,激活该语句块,上升沿到来时,激活该语句块,将将D D的值赋给的值赋给Q Q;否则,该语句块挂起,即使否则,该语句块挂起,即使D D有变化,有变化,Q Q的值也保持不变,直到下一次赋值。的值也保持不变,直到下一次赋值。例:例:always (D)always (D) Q=D Q=D;当当D D有变化时(不管是由有变化时(不管是由1 1变变0 0还是由还是由0 0变变1 1),激活该语句块,将),激活该语句块,将D D的值赋的值赋给给Q Q;否则,该语句块挂起
16、,否则,该语句块挂起,Q Q的值保持不的值保持不变,直到下一次赋值。变,直到下一次赋值。D DQ QD DCLKCLKQ QD DQ Q3. always语句块语句块。23说明:说明:l过程块中的赋值目标必须是过程块中的赋值目标必须是regreg型的。型的。l由于由于alwaysalways语句可以描述边沿变化,在设计时序电路中得语句可以描述边沿变化,在设计时序电路中得到广泛应用。到广泛应用。lalwaysalways语句中还可以使用语句中还可以使用ifif、casecase、forfor循环等语句,其循环等语句,其功能更加强大。功能更加强大。例:例:always (posedge CLK)a
17、lways (posedge CLK) Q=D Q=D;例:例:always (D)always (D) Q=D Q=D;必须是必须是regreg型的型的3. always语句块语句块。24253. always语句块语句块assign语句和语句和always语句的主要区别:语句的主要区别:连续赋值语句总是处于激活状态,只要操作数有变化马上进行连续赋值语句总是处于激活状态,只要操作数有变化马上进行计算和赋值;计算和赋值;过程赋值语句只有当激活该过程时,才会进行计算和赋值,如过程赋值语句只有当激活该过程时,才会进行计算和赋值,如果该过程不被激活,即使操作数发生变化也不会计算和赋值。果该过程不被激
18、活,即使操作数发生变化也不会计算和赋值。verilog规定规定assign中的赋值目标必须是中的赋值目标必须是wire型的,而型的,而always语句中的赋值目标必须是语句中的赋值目标必须是reg型的。型的。assign Q=Dalways (posedge clk) Q=D;例:例:只要只要D发生变化,马发生变化,马上进行计算和赋值;上进行计算和赋值; Q必须是必须是wire型。型。只有当只有当clk上升沿到来时,才能激活该上升沿到来时,才能激活该块语句,才能进行计算和赋值;否则,块语句,才能进行计算和赋值;否则,即使即使D发生变化也不会计算和赋值。在发生变化也不会计算和赋值。在未被激活时,
19、未被激活时,Q的值保持不变。的值保持不变。Q必须是必须是reg型。型。263. always语句块语句块lalways语句块中除了可以使用表达式赋值以外,还可以使用语句块中除了可以使用表达式赋值以外,还可以使用if,case等行为描述语句,还能够描述边沿变化,因此其功等行为描述语句,还能够描述边沿变化,因此其功能比能比assign语句更强大(语句更强大(assign语句不能使用语句不能使用if等语句,也等语句,也不能描述边沿变化)。不能描述边沿变化)。例:例:module DFF2 (CLK,D,Q,RST,EN)input CLK,D,RST,EN;output Q;reg Q;always
20、 (posedge CLK or negedge RST)begin if (!RST) Q=0; else if (EN) Q=DendendmoduleDENQDCLKQRST。273. always语句块语句块always语句块中如果有多条赋值语句必须将其用语句块中如果有多条赋值语句必须将其用begin end包括起来,包括起来,assign语句中没有语句中没有begin end。例:例:module adder (a,b,cin,s,cout) input a,b,cin; output s,cout; reg s,cout;always (a,b,cin)begin s=abcin;
21、 cout=(a&b)|(a&cin)|(b&cin);endendmodule思考问题:在仿思考问题:在仿真时,真时,begin和和end之间的语句之间的语句执行顺序如何?执行顺序如何?请大家画出该请大家画出该模块的端口符模块的端口符号图和电路图号图和电路图。3. always语句块语句块begin end之间的赋值语句有阻塞赋值和非阻塞赋值之分。之间的赋值语句有阻塞赋值和非阻塞赋值之分。阻塞赋值:语句顺序执行,前面的执行完才能执行后面;阻塞赋值:语句顺序执行,前面的执行完才能执行后面;赋值符号:赋值符号:=非阻塞赋值:所有语句并行执行。非阻塞赋值:所有语句并行执行。赋值符号:赋值符号:=赋
22、值目标赋值目标1=表达式表达式1;赋值目标赋值目标2=表达式表达式2;赋值目标赋值目标1=表达式表达式1;赋值目标赋值目标2=表达式表达式2;赋值语句赋值语句1会阻塞赋值语句会阻塞赋值语句2 ,即只有当赋值语句,即只有当赋值语句1执执行完才能执行赋值语句行完才能执行赋值语句2。赋值语句赋值语句1不会阻塞赋不会阻塞赋值语句值语句2 ,赋值语句,赋值语句1和赋值语句和赋值语句2并行执行。并行执行。283. always语句块语句块举例比较:举例比较:l阻塞赋值阻塞赋值begin m=a*b; y=m;endl非阻塞赋值非阻塞赋值begin m=a*b; y=m;end当当m=a*b 执行完才能执行
23、执行完才能执行y=m 。当当m赋值完成后,才能执行赋值完成后,才能执行y的赋值,的赋值,y得到的得到的是是m的新值。的新值。m和和y的赋值并行执行,的赋值并行执行,y得到的是得到的是m的旧值。的旧值。m=a*b 和和y=m并行执行并行执行 。29l阻塞赋值的实质:阻塞赋值的实质:右边表达式的计算和对左边寄存器变量的右边表达式的计算和对左边寄存器变量的赋值是一个统一的原子操作中的两个动作,这两个动作之间赋值是一个统一的原子操作中的两个动作,这两个动作之间不能再插入其他任何动作。不能再插入其他任何动作。l非阻塞赋值的实质:非阻塞赋值的实质:首先按顺序计算右边表达式的值,但是首先按顺序计算右边表达式
24、的值,但是并不马上赋值,而是要等到过程结束时再按顺序赋值。并不马上赋值,而是要等到过程结束时再按顺序赋值。赋值目标赋值目标1=表达式表达式1;赋值目标赋值目标2=表达式表达式2;赋值目标赋值目标1=表达式表达式1;赋值目标赋值目标2=表达式表达式2;。30l 阻塞赋值阻塞赋值【例例8-6】always (A,B)beginM1=A;M2=B&M1;Q=M1|M2;end设设A、B同时由同时由0变变1激活前:激活前:M1=0,M2=0,Q=0激活后:激活后:先计算先计算A=1,马上赋值给,马上赋值给M1再计算再计算B&M1=1,马上赋值给,马上赋值给M2再计算再计算M1|M2=1,马上赋值给,马
25、上赋值给Ql 非阻塞赋值非阻塞赋值【例例8-7】always (A,B)beginM1=A;M2=B&M1;Q=M1|M2;end先计算先计算A=1,(等待,不赋值),(等待,不赋值)再计算再计算B&M1=0,(等待,不赋值),(等待,不赋值)再计算再计算M1|M2=0,(等待,不赋值),(等待,不赋值)过程结束过程结束先赋值给先赋值给M1=1再赋值给再赋值给M2=0再赋值给再赋值给Q=0举例比较:举例比较:。313.2多路选择器的多路选择器的Verilog描述描述应用:应用:l 设计组合电路时常用阻塞赋值;设计组合电路时常用阻塞赋值;l 设计时序电路时常用非阻塞赋值;设计时序电路时常用非阻塞
展开阅读全文