书签 分享 收藏 举报 版权申诉 / 59
上传文档赚钱

类型2-Verilog语言快速入门课件.ppt

  • 上传人(卖家):晟晟文业
  • 文档编号:4741092
  • 上传时间:2023-01-06
  • 格式:PPT
  • 页数:59
  • 大小:703.19KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《2-Verilog语言快速入门课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    Verilog 语言 快速 入门 课件
    资源描述:

    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语句语句底层模块或底层模块或门原语调用门原语调用always语

    3、句块语句块module 模块名模块名(端口列表端口列表);端口信号声明端口信号声明;参数声明参数声明;endmoduleabsyMUX21a5Verilog程序结构程序结构例例2:边沿:边沿D触发器的触发器的Verilog描述描述内部信号内部信号声明声明assign语句语句底层模块或底层模块或门原语调用门原语调用always语句块语句块module 模块名模块名(端口列表端口列表);端口信号声明端口信号声明;参数声明参数声明;endmodule6Verilog模块结构模块结构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;位宽如果不做说明的话,默认是位宽如果不做说明的话,默认是1位;位;数据类型不做说明的话

    6、,默认是数据类型不做说明的话,默认是wire型的。型的。S位宽为位宽为4位,对应信号为位,对应信号为S3、S2、S1、S0根据模块说明部分,我们可以得出电路符号根据模块说明部分,我们可以得出电路符号ABCINSfull_adderCOUT82.assign语句语句内部信号内部信号声明声明assign语句语句底层模块或底层模块或门原语调用门原语调用always语句块语句块module 模块名模块名(端口列表端口列表);端口信号声明端口信号声明;endmoduleassign语句称作连续赋值语句语句称作连续赋值语句assign 赋值目标赋值目标=表达式表达式例:例:特点:特点:l之所以称为连续赋值

    7、语句是指其总是处于激活状态,只之所以称为连续赋值语句是指其总是处于激活状态,只要表达式中的操作数有变化,立即进行计算和赋值。要表达式中的操作数有变化,立即进行计算和赋值。(与连续赋值语句对应的另一种语句称为过程赋值语句)(与连续赋值语句对应的另一种语句称为过程赋值语句)l赋值目标必须是赋值目标必须是wire型的,型的,wire表示电路间的连线。表示电路间的连线。ayAbyassign y=a;assign y=a&b;基本格式:基本格式:92.assign语句语句例:例:assign M=B|C;assign Y=A&M;MM和和Y都必须是都必须是wire型的型的102.assign语句语句V

    8、erilog具有丰富的表达式运算功能,可用于具有丰富的表达式运算功能,可用于assign语句语句详见夏宇闻教材第详见夏宇闻教材第6章,自学。章,自学。(1)算术型算术型*乘法乘法/除法除法+加法加法-减法减法%求余求余*求幂求幂例例:Y=5%2;Y=2*3;求余,结果为求余,结果为1求幂,结果为求幂,结果为8说明说明l 加减乘除、求幂的操作数可以是实数也可以是整数,加减乘除、求幂的操作数可以是实数也可以是整数,求余运算的操作数只能是整数。求余运算的操作数只能是整数。l 求余运算结果取第一个操作数的符号;求余运算结果取第一个操作数的符号;11(2)逻辑型逻辑型!逻辑非逻辑非&逻辑与逻辑与|逻辑或

    9、逻辑或例例: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;格式格式17(8)拼接复制运算符拼接复制运算符拼接拼接 复制拼接复制拼接例例:Y=4b1001,

    10、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?d1:d0);如果如果a=1,则,则y=b;如果如果a=0,则,则y=c。如果如果a=x,则,则y=x。说明说明l根据表达式根据表达式1的值,决定运算结果

    11、;的值,决定运算结果;l如果表达式如果表达式1值为值为1,则结果等于表达式,则结果等于表达式2;l如果表达式如果表达式1值为值为0,则结果等于表达式,则结果等于表达式3;l如果表达式如果表达式1值为值为x,则结果为,则结果为x;l可以嵌套。可以嵌套。表达式表达式1?表达式表达式2:表达式表达式3格式一格式一19203.always语句块语句块内部信号内部信号声明声明assign语句语句底层模块或底层模块或门原语调用门原语调用always语句块语句块module 模块名模块名(端口列表端口列表);端口信号声明端口信号声明;endmodulealways语句块又称过程块语句块又称过程块基本格式:基

    12、本格式:always(敏感信号条件表敏感信号条件表)各类顺序语句;各类顺序语句;特点:特点:l always语句本身不是单一的有意义的一条语句,而是和下面的语语句本身不是单一的有意义的一条语句,而是和下面的语句一起构成一个语句块,称之为过程块;过程块中的赋值语句称过句一起构成一个语句块,称之为过程块;过程块中的赋值语句称过程赋值语句;程赋值语句;l 该语句块不是总处于激活状态,当满足激活条件时才能被执行,否该语句块不是总处于激活状态,当满足激活条件时才能被执行,否则被挂起,挂起时即使操作数有变化,也不执行赋值,赋值目标值则被挂起,挂起时即使操作数有变化,也不执行赋值,赋值目标值保持不变;保持不

    13、变;l 赋值目标必须是赋值目标必须是reg型的。型的。例:例:always (posedge CLK)Q=D;3.always语句块语句块l激活条件由敏感信号条件表决定,当敏感条件满足时,激活条件由敏感信号条件表决定,当敏感条件满足时,过程块被激活。过程块被激活。敏感条件有两种,一种是边沿敏感,一种是电平敏感。敏感条件有两种,一种是边沿敏感,一种是电平敏感。21电平敏感:电平敏感:(posedge(posedge 信号名信号名)边沿敏感:边沿敏感:(negedge(negedge 信号名信号名)(信号名列表信号名列表)信号上升沿到来信号上升沿到来信号下降沿到来信号下降沿到来例:例:(posed

    14、ge 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语句块语句块22例:例:always (posedge CLK)always (posedge CLK)Q=D Q=D;当当CLKCLK上升沿到来时,激活该语句块,上升沿到来时,激活该语句块,将将D D的值赋给的值赋给Q Q;否则,该

    15、语句块挂起,即使否则,该语句块挂起,即使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;否则,该语句块挂起,否则,该语句块挂起,Q Q的值保持不的值保持不变,直到下一次赋值。变,直到下一次赋值。D DQ QD DCLKCLKQ QD DQ Q3.always语句块语句块23说明:说明:l过程块中的赋值目标必须是过程块中的赋值目标必

    16、须是regreg型的。型的。l由于由于alwaysalways语句可以描述边沿变化,在设计时序电路中得语句可以描述边沿变化,在设计时序电路中得到广泛应用。到广泛应用。lalwaysalways语句中还可以使用语句中还可以使用ifif、casecase、forfor循环等语句,其循环等语句,其功能更加强大。功能更加强大。例:例:always (posedge CLK)always (posedge CLK)Q=D Q=D;例:例:always (D)always (D)Q=D Q=D;必须是必须是regreg型的型的3.always语句块语句块24253.always语句块语句块assign语句

    17、和语句和always语句的主要区别:语句的主要区别:连续赋值语句总是处于激活状态,只要操作数有变化马上进行连续赋值语句总是处于激活状态,只要操作数有变化马上进行计算和赋值;计算和赋值;过程赋值语句只有当激活该过程时,才会进行计算和赋值,如过程赋值语句只有当激活该过程时,才会进行计算和赋值,如果该过程不被激活,即使操作数发生变化也不会计算和赋值。果该过程不被激活,即使操作数发生变化也不会计算和赋值。verilog规定规定assign中的赋值目标必须是中的赋值目标必须是wire型的,而型的,而always语句中的赋值目标必须是语句中的赋值目标必须是reg型的。型的。assign Q=Dalways

    18、 (posedge clk)Q=D;例:例:只要只要D发生变化,马发生变化,马上进行计算和赋值;上进行计算和赋值;Q必须是必须是wire型。型。只有当只有当clk上升沿到来时,才能激活该上升沿到来时,才能激活该块语句,才能进行计算和赋值;否则,块语句,才能进行计算和赋值;否则,即使即使D发生变化也不会计算和赋值。在发生变化也不会计算和赋值。在未被激活时,未被激活时,Q的值保持不变。的值保持不变。Q必须是必须是reg型。型。263.always语句块语句块lalways语句块中除了可以使用表达式赋值以外,还可以使用语句块中除了可以使用表达式赋值以外,还可以使用if,case等行为描述语句,还能够

    19、描述边沿变化,因此其功等行为描述语句,还能够描述边沿变化,因此其功能比能比assign语句更强大(语句更强大(assign语句不能使用语句不能使用if等语句,也等语句,也不能描述边沿变化)。不能描述边沿变化)。例:例:module DFF2(CLK,D,Q,RST,EN)input CLK,D,RST,EN;output Q;reg Q;always(posedge CLK or negedge RST)begin if(!RST)Q=0;else if(EN)Q=DendendmoduleDENQDCLKQRST273.always语句块语句块always语句块中如果有多条赋值语句必须将其用

    20、语句块中如果有多条赋值语句必须将其用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;cout=(a&b)|(a&cin)|(b&cin);endendmodule思考问题:在仿思考问题:在仿真时,真时,begin和和end之间的语句之间的语句执行顺序如何?执行顺序如何?请大家画出该请大家画出该模块的端口符模块的端口符号图和电路图号图和电路图3.alway

    21、s语句块语句块begin end之间的赋值语句有阻塞赋值和非阻塞赋值之分。之间的赋值语句有阻塞赋值和非阻塞赋值之分。阻塞赋值:语句顺序执行,前面的执行完才能执行后面;阻塞赋值:语句顺序执行,前面的执行完才能执行后面;赋值符号:赋值符号:=非阻塞赋值:所有语句并行执行。非阻塞赋值:所有语句并行执行。赋值符号:赋值符号:=赋值目标赋值目标1=表达式表达式1;赋值目标赋值目标2=表达式表达式2;赋值目标赋值目标1=表达式表达式1;赋值目标赋值目标2=表达式表达式2;赋值语句赋值语句1会阻塞赋值语句会阻塞赋值语句2,即只有当赋值语句,即只有当赋值语句1执执行完才能执行赋值语句行完才能执行赋值语句2。赋

    22、值语句赋值语句1不会阻塞赋不会阻塞赋值语句值语句2,赋值语句,赋值语句1和赋值语句和赋值语句2并行执行。并行执行。283.always语句块语句块举例比较:举例比较:l阻塞赋值阻塞赋值begin m=a*b;y=m;endl非阻塞赋值非阻塞赋值begin m=a*b;y=m;end当当m=a*b 执行完才能执行执行完才能执行y=m。当当m赋值完成后,才能执行赋值完成后,才能执行y的赋值,的赋值,y得到的得到的是是m的新值。的新值。m和和y的赋值并行执行,的赋值并行执行,y得到的是得到的是m的旧值。的旧值。m=a*b 和和y=m并行执行并行执行。29l阻塞赋值的实质:阻塞赋值的实质:右边表达式的

    23、计算和对左边寄存器变量的右边表达式的计算和对左边寄存器变量的赋值是一个统一的原子操作中的两个动作,这两个动作之间赋值是一个统一的原子操作中的两个动作,这两个动作之间不能再插入其他任何动作。不能再插入其他任何动作。l非阻塞赋值的实质:非阻塞赋值的实质:首先按顺序计算右边表达式的值,但是首先按顺序计算右边表达式的值,但是并不马上赋值,而是要等到过程结束时再按顺序赋值。并不马上赋值,而是要等到过程结束时再按顺序赋值。赋值目标赋值目标1=表达式表达式1;赋值目标赋值目标2=表达式表达式2;赋值目标赋值目标1=表达式表达式1;赋值目标赋值目标2=表达式表达式2;30l 阻塞赋值阻塞赋值【例例8-6】al

    24、ways (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,马上赋值给,马上赋值给Ql 非阻塞赋值非阻塞赋值【例例8-7】always (A,B)beginM1=A;M2=B&M1;Q=M1|M2;end先计算先计算A=1,(等待,不赋值),(等待,不赋值)再计算再计算B&M1=0,(等待,不赋值),(等待,不赋值)再计算再计算M1|M2=0,(等待,不赋值),(等

    25、待,不赋值)过程结束过程结束先赋值给先赋值给M1=1再赋值给再赋值给M2=0再赋值给再赋值给Q=0举例比较:举例比较:313.2多路选择器的多路选择器的Verilog描述描述应用:应用:l 设计组合电路时常用阻塞赋值;设计组合电路时常用阻塞赋值;l 设计时序电路时常用非阻塞赋值;设计时序电路时常用非阻塞赋值;l 但不是绝对的。但不是绝对的。l 不建议在一个不建议在一个always块中混合使用阻塞赋值和非阻塞赋值块中混合使用阻塞赋值和非阻塞赋值例:阻塞赋值实现的组合电路例:阻塞赋值实现的组合电路module MY(A,B,C,Y)input A,B,C;output Y;reg Y;reg M;

    26、always (A,B,C)begin M=B|C;Y=A&M;endendmoduleM32例:非阻塞赋值实现的移位寄存器例:非阻塞赋值实现的移位寄存器module DDF3(CLK,D,Q)output Q;input CLK,D;reg a,b,Q;always (posedge CLK)begina=D;b=a;Q=b;end333.always语句块语句块综合举例:综合举例:4位二进制加法计数器位二进制加法计数器module CNT4(CLK,Q);input CLK;output 3:0 Q;reg 3:0 Q1;always (posedge CLK)begin Q1=Q1+1;

    27、endassign Q=Q1;endmodule此程序中有此程序中有always和和assign两两条语句,他们之间是并行的;条语句,他们之间是并行的;此程序中有一个内部变量此程序中有一个内部变量Q1,使用时要进行声明;使用时要进行声明;内部信号声明格式:内部信号声明格式:数据类型数据类型 位宽位宽 信号名称信号名称 元素个数元素个数344.底层模块和门原语调用底层模块和门原语调用例:图示电路的描述例:图示电路的描述daclkqCLKCLK内部信号内部信号声明声明assign语句语句底层模块或底层模块或门原语调用门原语调用always语句块语句块module 模块名模块名(端口列表端口列表);

    28、端口信号声明端口信号声明;endmodule该电路是由两个该电路是由两个D触发器和一个或门构成的,设计思路之触发器和一个或门构成的,设计思路之一是先设计底层电路一是先设计底层电路D触发器,然后再设计顶层电路,在触发器,然后再设计顶层电路,在顶层电路中可调用底层模块。顶层电路中可调用底层模块。一、底层模块调用一、底层模块调用354.底层模块和门原语调用底层模块和门原语调用底层模块描述底层模块描述module DFF(CLK,D,Q)output reg Q;input CLK,D;always (posedge CLK)Q=D;endmoduleQCLKCLKDDFF顶层模块描述顶层模块描述为了

    29、调用底层模块,需要加两个为了调用底层模块,需要加两个内部变量内部变量d1和和q1;并给两次调用的模块进行命名;并给两次调用的模块进行命名;调用时例化名不能省略。调用时例化名不能省略。daclkqCLKCLKq1d1DFFDFFdff1dff2module examp(clk,d,a,q)output q;input clk,d,a;wire d1;wire q1;DFF dff1(.CLK(clk),.D(d1),.Q(q1);DFF dff2(q1,d,q);or(d1,a,q);endmodule底层模块调用格式:底层模块调用格式:底层模块名底层模块名 例化名例化名(端口映射端口映射);3

    30、64.底层模块和门原语调用底层模块和门原语调用端口映射有两种方法:端口映射有两种方法:端口名关联法(命名法)端口名关联法(命名法)位置关联法(顺序法)位置关联法(顺序法)命名法格式:命名法格式:(.底层端口名底层端口名1(外接信号名外接信号名1),.底层端口名底层端口名2(外接信号名外接信号名2),)顺序法格式:顺序法格式:(外接信号名外接信号名1,外接信号名外接信号名2,)必须严格按照底层模块的端口信号列表顺序书写必须严格按照底层模块的端口信号列表顺序书写因为有名字对应,不必按底层模块的端口信号列表顺序因为有名字对应,不必按底层模块的端口信号列表顺序daclkqCLKCLKq1d1DFFDF

    31、Fdff1dff2module DFF(CLK,D,Q)QCLKCLKDDFFDFF dff1(.CLK(clk),.D(d1),.Q(q1);DFF dff2(q1,d,q);4.底层模块和门原语调用底层模块和门原语调用二、门原语调用二、门原语调用门原语名门原语名 实例名实例名 (端口连接端口连接)门原语调用格式:门原语调用格式:例:例:and(out,in1,in2);其中实例名可省略(和模块调用不同),端口连接只能采其中实例名可省略(和模块调用不同),端口连接只能采用顺序法,输出在前,输入在后。用顺序法,输出在前,输入在后。outin1in1and(与)or(或)xor(异或)nand(

    32、与非)nor(或非)xnor(同或)端口连接中第一个是输出,其余是输入,输入个数不限。端口连接中第一个是输出,其余是输入,输入个数不限。Verilog语言提供已经设计好的门,称为门原语(语言提供已经设计好的门,称为门原语(primitive,共共12个),这些门可直接调用,不用再对其进行功能描述。个),这些门可直接调用,不用再对其进行功能描述。与门等与门等6个个37384.底层模块调用底层模块调用端口列表中前面是输出,最后一个是输入,输出个数不限。端口列表中前面是输出,最后一个是输入,输出个数不限。not(非门)buf(缓冲器)not(OUT1,IN);INOUT1INOUT1OUT2buf

    33、b1_2out(OUT1,OUT2,IN);例:例:非门和缓冲器非门和缓冲器4.底层模块调用底层模块调用三态门三态门bufif1(控制端控制端1有效缓冲器有效缓冲器)notif1(控制端(控制端1有效非门)有效非门)bufif0(控制端控制端0有效缓冲器有效缓冲器)notif0(控制端(控制端0有效非门)有效非门)例:例:bufif1 b1(out,in,ctrl);bufif0 b0(out,in,ctrl);notif1 n1(out,in,ctrl);notif0 n0(out,in,ctrl);端口列表中前面是输出,中间是输入,最后是使能端,输出端口列表中前面是输出,中间是输入,最后是

    34、使能端,输出个数不限。个数不限。outoutoutoutininininctrlctrlctrlctrlbufif1三态门bufif0三态门notif1三态门notif0三态门395.Verilog中的数据类型中的数据类型Verilog中的数据类型分为两大类中的数据类型分为两大类线网类(线网类(net类)类)变量类(变量类(variable类)类)因连续赋值语句和过程赋值语句的激活特点不同,故赋值目标因连续赋值语句和过程赋值语句的激活特点不同,故赋值目标特点也不同,前者不需要保存,后者需要保存,因此规定两种特点也不同,前者不需要保存,后者需要保存,因此规定两种数据类型,数据类型,net型用于连

    35、续赋值的赋值目标或门原语的输出,型用于连续赋值的赋值目标或门原语的输出,且仿真时不需要分配内存空间,且仿真时不需要分配内存空间,variable用于过程赋值的赋值用于过程赋值的赋值目标,且仿真时需要分配内存空间。目标,且仿真时需要分配内存空间。40lnet类中的数据类型类中的数据类型wire(线型)(线型)tri(三态)(三态)tri0(下拉电阻)(下拉电阻)supply0(地)(地)wand(线与)(线与)triand(三态与)(三态与)tri1(上拉电阻)(上拉电阻)supply1(电源)(电源)wor(线或)(线或)trior(三态或)(三态或)trireg(电容性线网)(电容性线网)r

    36、eg(寄存器型)(寄存器型)integer(整型)(整型)time(时间型)(时间型)real(实型)(实型)realtime(实时间型)(实时间型)lvariable类中的数据类型类中的数据类型最常用的是最常用的是wire最常用的是最常用的是reg41将一个信号定义成将一个信号定义成net型还是型还是varible型,由以下两方面决定型,由以下两方面决定a.使用何种赋值语句对该信号进行赋值,如果是使用何种赋值语句对该信号进行赋值,如果是连续赋值或连续赋值或门原语赋值门原语赋值或或例化语句赋值例化语句赋值,则定义成,则定义成net型型;如果是;如果是过过程赋值程赋值则定义成则定义成variab

    37、le型型。b.对于端口信号来说,对于端口信号来说,input信号和信号和inout信号必须定义成信号必须定义成net型的;型的;output信号可以是信号可以是net型的也可以是型的也可以是variable型的,决定于如何对其赋值(同型的,决定于如何对其赋值(同a)。)。netnetvariable 或或 net42例:例:abcde该图中该图中d和和e的赋值有三种方法的赋值有三种方法(1)使用连续赋值语句使用连续赋值语句assign d=a&b;assign e=d|c;此时,此时,d和和e必须定必须定义为义为net型的。型的。(2)使用门原语赋值使用门原语赋值and(d,a,b);or(e

    38、,d,c);此时,此时,d和和e也必须也必须定义为定义为net型的。型的。(3)使用过程赋值语句使用过程赋值语句always(a,b,d,c)begin d=a&b;e=d|c;end此时,此时,d和和e必须定义为必须定义为variable型的。型的。43四个端口信号中四个端口信号中A、B必须是必须是net型的;型的;SO、CO可以是可以是net型的也可以是型的也可以是variable型的,决定于如何对其赋值型的,决定于如何对其赋值例:例:A AB BSOSOCOCOinsth_adder44例:例:l c决定于如何对其赋值决定于如何对其赋值;l d如果是端口信号,则必须是如果是端口信号,则必

    39、须是net型的;如果来自其它驱型的;如果来自其它驱动源则决定于如何对其赋值。动源则决定于如何对其赋值。l e、f、g、h必须是必须是net型的;型的;abcdA AB BSOSOCOCOinstA AB BSOSOCOCOinstefghh_adderh_adderh_adder U1(a,b,c,d);h_adder U2(c,d,e,f);4546例:例:2b00 5d8 无符号数的表示方法:无符号数的表示方法:有符号数的表示方法:有符号数的表示方法:例:例:8sb10111011 8b10111011 注意有符号数是按照补码表示的,即第一位是符号位。注意有符号数是按照补码表示的,即第一位

    40、是符号位。6.Verilog中数字的表示格式中数字的表示格式比较:比较:(00)2(01000)2(-69)10(187)10477.逻辑值逻辑值1:逻辑:逻辑1,高电平,数字,高电平,数字10:逻辑:逻辑0,低电平,数字,低电平,数字0 x:不确定:不确定z:高阻态:高阻态Verilog语言中的逻辑值有四种语言中的逻辑值有四种488.if语句语句4种类型的种类型的if语句语句if()语句语句;if()真语句真语句;else 假语句假语句;if()语句语句1;else if()语句语句2;else if()语句语句3;计算条件表达式计算条件表达式,如果结果为真如果结果为真(1或非或非0值值),

    41、则执行真语句,则执行真语句,如果条件为假如果条件为假(0或或x),则执行假语句。,则执行假语句。if()语句语句1;else if()语句语句2;else if()语句语句3;else 默认语句默认语句;l显然、种可比显然、种可比、种描述更复杂、种描述更复杂的条件关系。的条件关系。可以是一条语句,也可以是一组语句可以是一条语句,也可以是一组语句498.if语句语句例:计数器例:计数器always(posedge CLK)if(!RST)Q=0;else Q=Q+1;+A3.0B3.0ADDERDQPREENACLRSELDATAADATABOUT0MUX21Add04 h1-Q3.0reg0C

    42、LKRSTQ3.0Q3.04 h0-8.if语句语句1.加加elsealways(a,b)if(sel)Q=a;else Q=b;always(a,b)Q=a;if(sel)Q=b;使条件完整的两种方法:使条件完整的两种方法:01QselQab01QabselQ2.设初值设初值l在用在用if语句设计语句设计“组合电路组合电路”时要注意,如果条件不完整,时要注意,如果条件不完整,会综合出寄存器。会综合出寄存器。50518.if语句语句计算表达式计算表达式可以是任意形式的表达式;可以是任意形式的表达式;条件表达式的结果只有条件表达式的结果只有0和和1两种,如果计算表达式的值为两种,如果计算表达式的

    43、值为0,则条件表达式的值为则条件表达式的值为0,否则为,否则为1。例如:设例如:设a=1000,b=0110条件表达式条件表达式计算表达式计算表达式结果结果if(a=b)00if(ab)11if(a)10001if(a*b)11_0000(前两位被截掉前两位被截掉)0if(a|b)11101if(a&b)00000(计算表达式计算表达式)条件表达式格式:条件表达式格式:529.case语句语句case(表达式表达式)取值取值1:语句语句1;取值取值2:语句语句2;取值取值3:语句语句3;.default:默认语句默认语句;endcasecase(表达式表达式)取值取值1:语句语句1;取值取值2

    44、:语句语句2;取值取值3:语句语句3;.endcase如果表达式的值如果表达式的值=取值取值1,则执行语句,则执行语句1;如果表达式的值如果表达式的值=取值取值2,则执行语句,则执行语句2;如果表达式的值如果表达式的值=取值取值3,则执行语句,则执行语句3;如果表达式的值和上述取值都不相等,则执行默认语句。如果表达式的值和上述取值都不相等,则执行默认语句。default语句可以不带。语句可以不带。功能:功能:格式格式539 case语句语句例:例:module MUX41(a,b,c,d,s1,s0,y);input a,b,c,d,s1,s0;output reg y;/reg y;alwa

    45、ys(a,b,c,d,s1,s0)begincase(s1,s0)2b00:y=a;2b01:y=b;2b10:y=c;2b11:y=d;default:y=0;endcaseendendmoduleSEL1.0DATA3.0OUTMUXyabcds0s1Mux0如果条件描述不完整,则会综如果条件描述不完整,则会综合出寄存器;在设计组合电路合出寄存器;在设计组合电路时要注意使条件描述完整。时要注意使条件描述完整。加加default语句可以使条件完语句可以使条件完整。如果条件描述完整也可以整。如果条件描述完整也可以不加不加default语句。语句。5410.Verilog语言的描述风格语言的描述

    46、风格n结构化描述(也称门级描述)(全部用门原语和底层模结构化描述(也称门级描述)(全部用门原语和底层模块调用)块调用)n数据流级描述(全部用数据流级描述(全部用assign语句)语句)n行为级描述(全部用行为级描述(全部用always语句配合语句配合if、case语句等)语句等)三种描述方式三种描述方式nRTL级描述(数据流级级描述(数据流级+行为级,可综合)行为级,可综合)有些资料中提到另外一种描述方式:有些资料中提到另外一种描述方式:RTL级描述方式级描述方式实际描述是三种混合的实际描述是三种混合的举例:用门级描述、数据流描述、行为描述分别设计数据选举例:用门级描述、数据流描述、行为描述分

    47、别设计数据选择器择器55例例 多路选择器的多路选择器的Verilog 门级描述门级描述module mux4_to_1(out,i0,i1,i2,i3,s1,s0);output out;input i0,i1,i2,i3;input s1,s0;wire s1n,s0n;wire y0,y1,y2,y3;not(s1n,s1);not(s0n,s0);and(y0,i0,s1n,s0n);and(y1,i1,s1n,s0);and(y2,i2,s1,s0n);and(y3,i3,s1,s0);or(out,y0,y1,y2,y3);endmodule56例例 多路选择器的多路选择器的Veri

    48、log 数据流级描述数据流级描述module mux_to_1 (out,i0,i1,i2,i3,s1,s0);output out,input 10,i1,i2,i3;input s1,s0;assign out=(s1&s0&i0)|(s1&s0&i1)|(s1&s0&i2)|(s1&s0&i3);endmodule10.Verilog语言的描述风格语言的描述风格)01(3)01(2)01(1)01(0SSiSSiSSiSSiY数据选择器的公式:数据选择器的公式:5710.Verilog语言的描述风格语言的描述风格例例 多路选择器的多路选择器的Verilog 行为级描述行为级描述modul

    49、e mux4_to_1(out,i0,i1,i2,i3,s1,s0);output out;input i0,i1,i2,i3;input s1,s0;reg out;always(s1 or s0 or i0 or i1 or i2 or i3)begin case(s1,s0)2b00:out=i0;2b01:out=i1;2b10:out=i2;2b11:out=i3;default:out=1bx;endcase endendmodule58(1)关键字关键字(2)标识符标识符(3)文件取名和存盘文件取名和存盘 关键字即关键字即Verilog语言中预定义的有特殊含义的英文词语语言中预定

    50、义的有特殊含义的英文词语标识符即用户自定义的信号名、模块名等等;标识符即用户自定义的信号名、模块名等等;注意关键字不能作标识符;注意关键字不能作标识符;Verilog区别大小写(关键字都是小写)。区别大小写(关键字都是小写)。Verilog文件扩展名为文件扩展名为.v;verilog不要求文件名和模不要求文件名和模块名一致,但块名一致,但QuartusII要求一致要求一致/单行注释单行注释/*/多行注释多行注释(4)注释注释11.其它规定其它规定59作业作业1.说明说明assign语句和语句和always语句的特点。语句的特点。2.说明阻塞赋值和非阻塞赋值的特点。说明阻塞赋值和非阻塞赋值的特点

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:2-Verilog语言快速入门课件.ppt
    链接地址:https://www.163wenku.com/p-4741092.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库