ch2-可综合的Verilog设计

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

P1第2节可综合的Verilog设计P2Question:1.组合逻辑和时序逻辑分别是什么?2.Verilog语言中的值逻辑指的是什么?3.initial语句可综合吗?4.#5可综合吗?5.多个always语句的调度关系?6.什么是寄存器,什么是latch?如何避免产生latch?P3可综合的Verilog设计一.值逻辑,基本数据类型以及操作二.赋值和块语句三.建模方式四.基本组合逻辑的建模五.基本时序逻辑的建模六.复杂逻辑及状态机的建模P4值逻辑四值逻辑1高电平,逻辑10低电平,逻辑0X不确定的逻辑状态Z高阻态P5数据类型Wire器件之间的物理连接。由驱动元件的值决定。线网的缺省值为z。assign语句进行赋值wire[0:3]abus;assignabus=4’b0000;Register抽象的储存单元。always语句和initial语句中被赋值,并且赋值保持不变缺省值为x。reg[0:3]bbus;P6数据类型——WireWireabslselbselansloutwiresela;assignsela=a&ns1;P181阻塞赋值=用于组合逻辑的建模E.g.1①b=a+1;②c=b+1;2.2阻塞赋值和非阻塞赋值P202非阻塞赋值=建模时序电路与语句先后次序没有关系e.g.①b=a+1;②c=b+1;2.2阻塞赋值和非阻塞赋值P23阻塞赋值和非阻塞赋值使用总结带时钟的always模块使用非阻塞赋值不带时钟的always模块使用阻塞赋值连续赋值采用阻塞赋值同一个always中不能混用P24E.g.1always@(posedgeclk)beginif(!rst_n)begina=1’b0;b=1’b0;endelsebegina=c;b=a;endend2.2阻塞赋值和非阻塞赋值P25E.g.2always@(posedgeclk)beginif(!rst_n)begina=1’b0;b=1’b0;endelsebegina=c;b=a;endend2.2阻塞赋值和非阻塞赋值P343建模方式—连续赋值特点数据流建模用于组合逻辑建模assign线网类型,不能为寄存器赋值assignLHS_target=RHS_expression一旦右边表达式的信号发生变化,则重新计算e.g.wire[3:0]z,preset,clear;//线网说明assignz=preset&clear;//连续赋值语句P37三建模方式—行为建模特点注重结构和功能,算法描述综合工具支持语句initialalwaystaskfunctionP39always@(敏感信号表)beginend重复执行敏感信号表完整所有的always并行执行,与编写顺序无关一个变量只能在一个always中赋值变量是reg型alwaysP40Eg1always@(aorb)beginif(ab)c=1’b0;elsec=1’b1;endP44eg5moduledff(clk,rst_n,d,q);inputclk,rst_n,d;outputq;regq;always@(posedgeclk)beginif(!rst_n)q=1’b0;elseq=d;endendmoduleWaveform?P45eg6moduledff_load(clk,rst_n,load,data,q);inputclk,rst_n,load,data;outputq;regq;always@(posedgeclk)beginif(!rst_n)q=1’b0;elseif(load)q=data;endendmoduleP46e.g7计数器always@(posdegeclkornegedgerst_n)beginif(!rst_n)counter=4’b0;elseif(counter==4’d10)counter=4’b0;elsecounter=counter+1’b1;endWaveform?P47e.g.8......wirec;always@(aorb)beginif(a==b)c=1’b0;elsec=1’b1;endalways@(doreorf)beginif(d=e)c=1’b1;elsec=1’b0;end……Howmanyerrorsandwhy?P55思考Initial和always哪一个可以循环执行?如何保证敏感信号表完整?设计一个异步复位,同步置位的寄存器Latch和寄存器的区别?P56三建模方式—层次化建模层次化设计实例化信号的引用P57e.g.1`timescale1ns/100psmodulesub_dff(clk,rst_n,d,q);inputclk;inputrst_n;inputd;outputq;P58regq;always@(posedgeclkornegedgerst_n)beginif(!rst_n)q=1’b0;elseq=d;endendmoduleP59modulealu;...wireclk,rst_n,my_d,my_q;sub_dffUUT_sub_dff(.clk(clk),.rst_n(rst_n),.d(my_d),.q(my_q));...UUT_sub_dff.qendmoduleP60可综合的Verilog设计一.值逻辑,基本数据类型以及操作二.赋值和块语句三.建模方式四.基本组合逻辑的建模五.基本时序逻辑的建模六.复杂逻辑及状态机的建模P614基本组合逻辑的建模建模方法基本块建模P62思考?数字电路的组成1:基本逻辑:与&&,或,非2:线(wire)3:寄存器(reg)P63assign数据流建模实现对线变量的赋值建模简单组合逻辑使用阻塞赋值assignb=a&c;P64always行为级建模实现对寄存器变量的赋值建模时序逻辑和复杂组合逻辑建模组合逻辑使用阻塞赋值建模时序逻辑使用非阻塞赋值敏感信号表触发P65e.g.1:comlogicrega;always@(borcord)beginif(b)a=c;elsea=d;andwirea;assigna=b?c:d;reg型的区别P66e.g2:seqlogicrega;always@(posedgeclk)beginif(rst)a=1’b0;elseif(b)a=c;elsea=d;end综合后电路以及波形?P67基本组合逻辑的建模加法器减法器编码器译码器总线和总线操作P68加法器的建模设计二进制加法的原理1+1=10,0+1=1,1+0=1,0+0=0数字电路的表示sum=a|b;ca=a&b;P69一位半加器regsum,ca;always@(aorb)beginsum=a^b;ca=a&b;endwiresum,ca;assignsum=a^b;assignca=a&b;regsum,ca;always@(aorb)begin{ca,sum}=a+b;endP70一位全加器regsum,ca;always@(aorborcin)beginsum=a^b^cin;ca=a&b|a&cin|b&cin;endwiresum,ca;assignsum=a^b^cin;assignca=a&b|a&cin|b&cin;regsum,ca;always@(aorborcin)begin{ca,sum}=a+b+cin;endmoduelone_full_add(a,b,cin,ca,sum);P7132位加法器方法一:由一位全加器级联而成...wire[0:31]opa,opb,sum;wireca31,ca30,ca29,...,ca1,ca0;one_full_add(.a(opa[31]),b(opb[31]),cin(1’b0),.ca(ca31),.sum(sum[31]));one_full_add(.a(opa[30]),b(opb[30]),cin(ca31),.ca(ca30),.sum(sum[30]));...one_full_add(.a(opa[0]),b(opb[0]),cin(ca1),.ca(ca0),.sum(sum[0]));P72P73方法二:快速算法C[i]=(a[i]&b[i])|(a[i]&c[i-1])|(b[i]&c[i-1])G[i]=a[i]&b[i]P[i]=a[i]|b[i]e.g1c[1]=g[0]+p[0]cin;c[2]=g[1]+p[1]c[1]=g[1]+p[1]g[0]+p[1]p[0]cin=G(1,0)+p(1,0)cin能够分析发觉潜在的并行性P74四位超前进位链P75逻辑综合结果P76P77方法三:由综合器自动完成wire[0:31]a,b,sum;wireca;assign{ca,sum}=a+b;P78减法a–b=a+(~b)+1P79编码器完成对多个信号的编码处理器的中断信号源处理一般使用case或者if语句完成P80always@(time_intoruart_intordma_intor...)beginif(time_int)vector=3’b001;elseif(uart_int)vector=3’b010;elseif(dma_int)vevtor=3’b011;…elsevector=3’b000;end使用Case和if的区别?P81译码器完成对信号的译码,分解信号的意义处理器的译码器P821.moduledecode3_8(data_in,EN,data_out);2.input[2:0]data_in;3.inputEN;4.output[7:0]data_out;5.reg[7:0]data_out;6.always@(data_inorEN)7.begin8.data_out={8{1'b0}};9.if(EN==1)10.begin11.case(data_in[2:0])12.3'b000:data_out[7:0]=8'b00000001;13.3'b001:data_out[7:0]=8'b00000010;14.3'b010:data_out[7:0]=8'b00000100;15.3'b011:data_out[7:0]=8'b0000100016.3'b100:data_out[7:0]=8'b00010000;17.3'b101:data_out[7:0]=8'b00100000;18.3'b110:data_out[7:0]=8'b01000000;19.3'b111:data_out[7:0]=8'b10000000;20.default:data_out[7:0]={8{1'b0}};21.endcase22.end23.end24.endmoduleP831.modulebin27seg(data_in,EN,data_out);2.input[3:0]data_in;3.inputEN;4.output[6:0]data_out;5.always@(data_in)6.begin7.data_out=7'b1111111;8.if(EN==1)9.case(data_in)10.4‘b0000:data_out=7'b1000000;//011.4‘b0001:data_out=7'b1111001;//112.4'b0010:data_out=7'b0100100;//213.4'b0011:data_out=7'b0110000;//314.4'b0100:data_out=7'b0011001;//415.4'b0101:data_out=7'b0010010;//516.4‘b0110:data_out=7'b0000011;//617.4'b0111:data_out=7'b1111000;//718.4'

1 / 55
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功