ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:18.55KB ,
资源ID:23904669      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/23904669.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(学习FPGA的心得.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

学习FPGA的心得.docx

1、学习FPGA的心得学习FPGA的心得一:设计规范:1,文件名必须体现模块的功能 2,时钟信号clk和低电平有效的信号(低电平有效*_n) 3,parameter和define 进行宏定义和定义参数是, 名字要大写 4,信号,端口,模块,例话(代码最好小写)5,一般字符的命名长度不应超过32个6模块调用实体名的设定 mux4 u_mux4_1(.)7,位宽【x:0】8,begin和end,case和endcase。的对齐问题9,原理图输入时,当有文本输入和原理图输入时,原 理图作为顶层文件,最好采用页面水平分层结构10,阻塞(=)和非阻塞(=)的问题 阻塞计算完立刻赋值,而非阻塞计算后不立刻赋值

2、, 而是一起赋值,组合逻辑(阻塞赋值),时序逻辑(非 阻塞),既有时序又有组合是使用(非阻塞)11,敏感信号列表(影响模块的输出和状态)12,复位和初始化13,输出设为reg 14.verilog中reg与integer的区别首先,integer和 reg与wire最大的差別是,integer本身是个32位元的有 号数,含正负。其次,integer消耗的资源也比多。二:分频器(frequency divider) Module div_10(clk_50,f_10,rst_n); Input clk_50; Input rst_n; Output f_10; Reg 2:0 cnt; Reg

3、f_10; Always (posedge clk or negedge rst_n) If(!rstn) Cnt=3b0; F_10=0; Else Begin If(cnt=3b100)begin Cnt=0; F_10=f_10; end Else Begin Cnt=cnt+3b1; end EndEndmodule三:计数器(counter)Module counter(clk,rst_n,s,q,en,d,co);Input clk;Input rst_n;Input en;Input 3:0 d;Output 3:0 q;Output co;Reg co;Reg 3:0 q;Al

4、ways (posedge clk or negedge rstn)If(!rst_n) begin q =0; end Else BeginIf(s) Begin q=d; EndElse If(en) Begin q=q+4b1; If(q=4b1111) Begin Co=1; End Else Begin Co=0; end endelse Begin Q=q; End EndEndmodule四:D触发器(D_Trigger)Module D_Trigger(clk,rst_n,q,qn,s,d);Input clk,rst_n,s,d;Output q,qn;Reg q,qn;Al

5、ways (posedge clk)_If(rst_n,s=2b01) begin Q=1b0;Qn=1b1; endElse If(rst_n,s=2b10) begin Q=1b1; Qn=1b0;end Else If(rst_n,s=2b11) begin Q=d; Qn=d; EndEndmodule五:三态门( triple gate)Module tri(din,dout,en);Input din,en;Output dout;Assign dout=en?din:bz;Endmodule六:编码器(encoder)Module 8_3encoder(din,dout);Inp

6、ut 7:0 din;Output 2:0 dout;Reg 2:0 dout;Always (din)Begin Case(din) 8b0000 0001: dout=3b000; 8b0000 0010: dout=3b001; 8b0000 0100: dout=3b010; 8b0000 1000: dout=3b011; 8b0001 0000: dout=3b100; 8b0010 0000: dout=3b101; 8b0100 0000: dout=3b110; 8b1000 0001: dout=3b111; Defult: dout=3dzzz; EndcaseendEn

7、dmodule优先编码器( priority encoder)Module coder_42(in,out);Input 3:0 in;Output 1;0 out;Always (in)Begin Case(in)4b1000:out=2b00;4bx100:out=2b01;4bxx10:out=2b10;4bxxx1:out=2b11;Default:out=2bx;EndcaseEndendmodule七:译码器(.decoder )A1,A2,A3为三个输入信号,s1,s2,s3为3个使能输入,Y1Y1,Y2,Y3,Y4,Y5,Y6,Y7为8个输出信号;Module 8_3decod

8、er(a,gs1,gs2,gs3,y);Input 2:0 a;Input gs1,gs2,gs3;Out 7:0 y;Reg 7:0 y;Always (a or gs1 or gs2 or gs3)Begin If(gs1=1) Y=8b1111 1111; Else if(gs2=0) Y=8b1111 1111; Else if(gs3=0) Y =8b1111 1111;Else Case(a) 3b000: Y=8b1111 1110; 3b001: Y=8b1111 1101; 3b010: Y=8b1111 1011; 3b011: Y=8b1111 0111; 3b100:

9、Y=8b1110 1111; 3b101: Y=8b1101 1111; 3b110: Y=8b1011 1111; 3b111: Y=8b0111 1111; Default: Y=8b1111 1111;EndcaseEndEndmmodule八,移位寄存器(shift register) 4位异步清零的并入串出移位寄存器Module reg_bc(clk,clr,din,dout);Input clk,clr;Input 7;0 din;Output dout;Reg dout;Reg 3:0 q;Reg 1:0 cnt;Always (posedge clk )Begin Cnt=cn

10、t+1; If(clr) BeginQ0) Begin Q3:1=q2:0; EndElse if(cnt=2b00) begin Q=din; end Dout=q3; End EndEndmmodule九:数据选择器( multiplexer)Module mux4_1(d1,d2,d3,d4,g,a,y);Input g;Input d0,d1,d2,d3;Input 1:0 a;Output y;Reg y;Always (a or d0 or d1 or d2 or d3 or g )Begin If(g=0) Y=1b0; Else Case(a) 2b00: y=d0; 2b01

11、: y=d1; 2b10: y=d2; 2b11: y=d3; Default: y=1b0; Endcase EndEndmodule10串行加法器(serial adder)Module add_4(a,b,c,ci,co);Input 3:0 a,b;Input ci;Output 3:0 c;Output co;Assignco,c=a+b+ci;Endmodule11简单运算单元(ALU) 11种简单运算逻辑单元,通过选择端来选择运算功能的ALU。 Module ALU(in1,in2,op,out); Input 7:0 in1,in2; Input op; Output 15:0

12、 out; Wire 7:0 in1,in2; Wire op; Reg 15:0 out; Parameter Transfer=4b0001, Increase=4b0010, Decrease=4b0011, Addition=4b0100, Subtraction=4b0101, And=4b0110, Or=4b0111, Xor=4b1000, Not=4b1001, Shift_left=4b1010, Shift_right=4b1011; Always (in1 or in2 or op) Begin Case(op) Transfer: out=in1; Increase:

13、 out=in1+1b1; Decrease: out=in1-1b1; Addition: out=in1+in2; Subtraction: out=in1-in2; And: out=in1&in2; Or: out=in1|in2; Xor: out=in1in2; Not: out=in1; Shift_left: out=in11; Default: out=16bz; Endcase End Endmodule十二:LED灯 一般绿,蓝,白,暖白色的led导通电压为3.03.5V,红,黄为2.52.8v,导通电流为15ma,一般高亮的led灯,限流电阻为400500欧姆,普通的1

14、K就可以了,但不要超过2k,反相击穿约为5V; 流水灯的控制方式有循环和移位;移位的控制方式:Always (posedge clk or negedge rst_n)Begin If(!Rst_n) begin Count=41h0; Led_temp=8h80; End Else Count=count+41h1; If(count=41hff_ff_ff) begin Led_temp1; Led_temp=led_temp; Count=41h0; If(led_temp=8h01) begin Led_temp=8h80; end EndEndmodule循环控制的方法:Always

15、 (posedge clk)Begin If(count=24h 500000) Begin Clk_div=clk_div; Count=24h000000; End Else Count=count+1b1; EndAlways (posedge clk_div or negedge reset) If(!Reset) begin Led=8hff; Led_state=5b00000; EndElseBegin Case(led_state) 5b00000: led=8b1111_1110; . Default: led=8b1111_1111; Endcase Led_state=l

16、ed_state+1b1;EndEndmodulePWM控制 (pulse _width modulation)13LED灯的亮暗(按键控制)module pwm(clk,reset,key,led);input clk,reset,key;output led;reg pwm_out;reg key_out;parameter s0=2b00,s1=2b01,s2=2b10,s3=2b11;reg 1:0 state;reg 31:0 clk_counter;reg 9:0 pwm_counter;reg flag;/*按键消抖*/always (posedge clk) begin cas

17、e (state) s0: begin key_out=1b1; if(key=1b0) state=s1; else state=s0; end s1: begin if(key=1b0) state=s2; else state=s0; end s2: begin if(key=1b0) state=s3; else state=s0; end s3: begin if(key=1b0) begin key_out=1b0; state=s3; end else begin key_out=1b1; state=s0; end end default: state=s0; endcase

18、endalways (posedge clk) begin clk_counter=clk_counter+1b1; if (clk_counter13:4pwm_counter) pwm_out=1; else pwm_out=0; if (clk_counter15=1b1) begin if (flag=1b1) begin flag=1b0; if (key_out=1b0) pwm_counter=(pwm_counter+10b0000000011); else pwm_counter=pwm_counter; end end else flag=1b1; end assign l

19、ed=pwm_out;Endmodule14数码管的动态显示 刷新的频率大于50Hz,及显示一轮的时间不超过20ms,显示的时间 控制在1ms左右最佳 Module seg(clk,rst_n,wei,duan);Input clk,rst_n;Output 7:0 wei;Output 7:0 duan;Reg 7:0 wei;Reg 7:0 duan;integer count;Reg clk_1KHz;Reg 2:0 wei_count; Always (posedge clk)beginIf(count=50000) begin Count=0;Clk_1KHz=clk_1KHz; E

20、nd Else Count=count+1; EndAlways (posedge clk_1KHz)Begin Case(wei_count) 3b000: begin wei=8b11111110; duan=8b0000_0000;wei_count=wei_count+1b1;end 3b001: begin wei=8b11111101; duan=8b0000_0000;wei_count=wei_count+1b1;end 3b010: begin wei=8b11111011; duan=8b0000_0000;wei_count=wei_count+1b1;end 3b011

21、: begin wei=8b11110111; duan=8b0000_0000;wei_count=wei_count+1b1;end 3b100: begin wei=8b11101111; duan=8b0000_0000;wei_count=wei_count+1b1;end 3b101: begin wei=8b11011111; duan=8b0000_0000;wei_count=wei_count+1b1;end 3b110: begin wei=8b10111111; duan=8b0000_0000;wei_count=wei_count+1b1;end 3b111: be

22、gin wei=8b01111111; duan=8b0000_0000;wei_count=wei_count+1b1;endEndcaseEndmodule十五:秒表数码管显示module seg(clk,duan,wei);input clk;output 7:0 duan;output 1:0 wei;reg 7:0 duan;reg 1:0 wei;integer count;integer count2;reg 3:0 ge;reg 3:0 shi;reg clk_1Hz;reg clk_scan;reg select;always (posedge clk)begin if(co

23、unt=25000000) begin count=0; clk_1Hz=clk_1Hz; end else count=count+1b1;endalways (posedge clk_1Hz)begin if(ge=4b1001) begin ge=4b0; if(shi=4b1001) shi=4b0; else shi=shi+1b1; end else ge=ge+1b1;endalways (posedge clk)begin if(count2=50000) begin clk_scan=clk_scan; count2=0; end else count2=count2+1b1

24、;endalways (posedge clk_scan)begin select=select+1b1;endalways (ge or shi or select)begin if(select=1) begin wei=2b10; case(ge) 4b0000:begin duan=8b1100_0000;end 4b0001:begin duan=8b1111_1001;end 4b0010:begin duan=8b1010_0100;end 4b0011:begin duan=8b1011_0000;end 4b0100:begin duan=8b1001_1001;end 4b

25、0101:begin duan=8b1001_0010;end 4b0110:begin duan=8b1000_0011;end 4b0111:begin duan=8b1111_1000;end 4b1000:begin duan=8b1000_0000;end 4b1001:begin duan=8b1001_1000;end default duan=8bx; endcase end else begin wei=2b01; case(shi) 3b000:duan=8b1100_0000; 3b001:duan=8b1111_1001; 3b010:duan=8b1010_0100; 3b011:duan=8b1011_0000; 3b100:duan=8b1001_1001; 3b101:duan=8b1001_0010; 3b110:duan=8b1000_0011; default duan=8bx; endcase endend endmodule

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1