资源描述:
《学习FPGA的心得》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、学习FPGA的心得一:设计规范:1,文件名必须体现模块的功能2,时钟信号clk和低电平有效的信号(低电平有效*_n)3,parameter和`define进行宏定义和定义参数是,名字要大写4,信号,端口,模块,例话(代码最好小写)5,一般字符的命名长度不应超过32个6模块调用实体名的设定mux4u_mux4_1(....)7,位宽【x:0】8,begin和end,case和endcase。。。的对齐问题9,原理图输入时,当有文本输入和原理图输入时,原理图作为顶层文件,最好采用页面水平分层结构10,阻塞(=)和非阻塞(>=)的问题阻塞计算完立刻赋值,而非阻塞计算后不立刻赋值,而是一起赋值,
2、组合逻辑(阻塞赋值),时序逻辑(非阻塞),既有时序又有组合是使用(非阻塞)11,敏感信号列表(影响模块的输出和状态)12,复位和初始化13,输出设为reg14.verilog中reg与integer的区别首先,integer和reg与wire最大的差別是,integer本身是个32位元的有号数,含正负。其次,integer消耗的资源也比多。二:分频器(]frequencydivider)Modulediv_10(clk_50,f_10,rst_n);Inputclk_50;Inputrst_n;Outputf_10;Reg[2:0]cnt;Regf_10;Always@(posedgec
3、lkornegedgerst_n)If(!rstn)Cnt<=3’b0;F_10<=0;ElseBeginIf(cnt==3’b100)beginCnt<=0;F_10<=~f_10;endElseBeginCnt<=cnt+3’b1;endEndEndmodule三:计数器(counter)Modulecounter(clk,rst_n,s,q,en,d,co);Inputclk;Inputrst_n;Inputen;Input[3:0]d;Output[3:0]q;Outputco;Regco;Reg[3:0]q;Always@(posedgeclkornegedgerstn)If(
4、!rst_n)beginq=0;endElseBeginIf(s)Beginq=d;EndElseIf(en)Beginq=q+4’b1;If(q==4’b1111)BeginCo=1;EndElseBeginCo=0;endendelseBeginQ=q;EndEndEndmodule四:D触发器(D_Trigger)ModuleD_Trigger(clk,rst_n,q,qn,s,d);Inputclk,rst_n,s,d;Outputq,qn;Regq,qn;Always@(posedgeclk)_If({rst_n,s}==2’b01)beginQ=1’b0;Qn=1’b1;en
5、dElseIf({rst_n,s}==2’b10)beginQ=1’b1;Qn=1’b0;endElseIf({rst_n,s}==2’b11)beginQ=d;Qn=~d;EndEndmodule五:三态门(triplegate)Moduletri(din,dout,en);Inputdin,en;Outputdout;Assigndout=en?din:’bz;Endmodule六:编码器(encoder)Module8_3encoder(din,dout);Input[7:0]din;Output[2:0]dout;Reg[2:0]dout;Always@(din)BeginCas
6、e(din)8’b00000001:dout=3’b000;8’b00000010:dout=3’b001;8’b00000100:dout=3’b010;8’b00001000:dout=3’b011;8’b00010000:dout=3’b100;8’b00100000:dout=3’b101;8’b01000000:dout=3’b110;8’b10000001:dout=3’b111;Defult:dout=3’dzzz;EndcaseendEndmodule优先编码器(priorityencoder)Modulecoder_42(in,out);Input[3:0]in;Out
7、put[1;0]out;Always@(in)BeginCase(in)4’b1000:out=2’b00;4’bx100:out=2’b01;4’bxx10:out=2’b10;4’bxxx1:out=2’b11;Default:out=2’bx;EndcaseEndendmodule七:译码器(.decoder)A1,A2,A3为三个输入信号,s1,s2‘,s3’为3个使能输入,Y1’Y1‘,Y2’,Y3’,Y4’,Y5’,Y6