欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    fpga课程设计报告.doc

    • 资源ID:4137116       资源大小:4.15MB        全文页数:31页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    fpga课程设计报告.doc

    文华学院F P G A课程设计报告专业:电子信息工程班级:电信三班学号:0901020312345姓名:雷帆设计课题1:设计一个可控的100进制可逆计数器,要求用实验箱下载。计数器的时钟输入信号周期为200ns。以十进制形式显示。有一个复位端clr和两个控制端plus和minus,在这些控制信号的作用下,计数器具有复位、增或减计数、暂停功能。clrplusminus功能0××复位为0110递增计数101递减计数111暂停计数1、源程序(附注释):(1)module counter100(out,clk,clr,plus,minus);output7:0 out;input clk,plus,minus,clr;reg 7:0 out;always (posedge clk)begin if (!clr) out<=0; /若CLR为0 将计数复位为0 else begin case (plus,minus) 2'b10:begin /若PLUS为1并且MINUS为0 if (out3:0=9) /若计数低四位为9 begin out3:0<=0; /将低四位置0 if (out7:4=9) out7:4<=0; /若高四位为9 则将高四位置0 else out7:4<=out7:4+1; /否则将高四位加1 end else out3:0<=out3:0+1; /若计数低四位不为9则加1 end 2'b01:begin /若PLUS为0并且MINUS为1 if (out3:0=0) /若低四位为0 begin out3:0<=9; /低四位置9 if (out7:4=0) out7:4<=9; /若高四位为0 高四位置9 else out7:4<=out7:4-1; /否则高四位减1 end else out3:0<=out3:0-1; /若计数低四位不为0则减1 end 2'b11: out<=out; /若PLUS和MINUS同时为1 计数为原值不变 default:out<=0; endcase endend endmodule2、生成的波形图:counter100:(1)当clr为0时,复位为0;当PLUS为1,MILUS为0时按递增计时。(2)当PLUS为1,MILUS为1时暂停计时。(3)当PLUS为0,MILUS为1时按递减计时。3、管脚分配:4、下载过程等的截图和注解:(1)为下载选择正确的实验板型号(2)下载使用的BDF电路图:(3)开始下载,选择Tools > Programmer,并单击Start.设计课题2:交通灯控制系统,要求用实验箱下载。(1) 设计一个十字路口交通信号灯的定时控制电路。要求红、绿灯按一定的规律亮和灭,绿灯亮时,表示该车道允许通行;红灯亮时,该车道禁止通行。并在亮灯期间进行倒计时,并将运行时间用数码管显示出来。(2)要求主干道每次通行时间为40秒,支干道每次通行时间为30秒。每次变换运行车道前绿灯闪烁,持续时间为5秒。即车道要由主干道转换为支干道时,主干道在通行时间只剩5秒钟时,绿灯闪烁5秒显示,支干道仍为红灯,以便主干道上已过停车线的车继续通行,未过停车线的车停止通行。同理,当车道由支干道转换为主干道时,支干道绿灯闪烁显示5秒钟,主干道仍为红灯。(3)定时器要求采用递减计时方式进行计时。HG、HR分别表示主干道的绿灯和红灯CG、CR分别表示支干道的绿灯和红灯两个定时时间:绿灯闪烁和绿灯停止闪烁源程序(附注释):(1)module traffic00 (clk,en,lampar,fag,lampbr,fbg,numa,numb);input clk,en;output 7:0numa,numb;reg 7:0numa,numb;/计时显示output fag,fbg,lampar,lampbr; /fag:flash a greenreg lampar,lampag,lampbr,lampbg;/表示主路?路共四个灯reg tempa,tempb; /装入计数reg 2:0 counta,countb;/灯亮的顺序reg 7:0 ared,agreen,bred,bgreen;always (en) if(!en) begin / 设置各种灯的预置数 ared <=8'b00110000; agreen <=8'b01000000; bred <=8'b01000000; bgreen <=8'b00110000; endalways (posedge clk) begin if(en) begin if(!tempa) begin tempa<=1; case(counta) /控制灯亮的顺序 0: begin numa<=agreen;lampag<=1;lampar<=0;counta<=1; end 1: begin numa<=ared; lampag<=0;lampar<=1;counta<=0; end default: lampar<=1; endcase end else begin /倒计时 if(numa>8'b00000001) begin if(numa3:0=0) begin numa3:0<=4'b1001; numa7:4<=numa7:4-1;end else numa3:0<=numa3:0-1; end if(numa=8'b0000010) tempa<=0; end end else begin lampar<=1;lampag<=0;counta<=0;tempa<=0; end end always (posedge clk) /该进程控制B方向的四种灯 begin if(en) begin if(!tempb) begin tempb<=1; case (countb) 0: begin numb<=bred; lampbr<=1;lampbg<=0;countb<=1; end 1: begin numb<=bgreen;lampbr<=0;lampbg<=1;countb<=0; end default: lampbg<=1; endcase end else begin if(numb>8'b00000001) /倒计时 if(numb3:0=0) begin numb3:0<=9; numb7:4<=numb7:4-1; end else numb3:0<=numb3:0-1; if(numb=2) tempb<=0; end end else begin lampbr<=1;lampbg<=0;tempb<=0; countb<=0; end endassign fag=(numa>5)?(lampag?1:0):clk&lampag; /主干道绿灯倒数5秒闪耀assign fbg=(numb>5)?(lampbg?1:0):clk&lampbg; /?干道绿灯倒数5秒闪耀endmodule(2)module decode4_7 ( input 3:0 indec_0,indec_1,indec_2,indec_3,indec_4,indec_5,indec_6,indec_7, output reg 6:0 dout_0,dout_1,dout_2,dout_3,dout_4,dout_5,dout_6,dout_7);always(indec_0 or indec_1 or indec_2 or indec_3 or indec_4 or indec_5 or indec_6 or indec_7 ) begin case(indec_0) 4'h1: dout_0 = 7'b111_1001; / -0- 4'h2: dout_0 = 7'b010_0100; / | | 4'h3: dout_0 = 7'b011_0000; / 5 1 4'h4: dout_0 = 7'b001_1001; / | | 4'h5: dout_0 = 7'b001_0010; / -6- 4'h6: dout_0 = 7'b000_0010; / | | 4'h7: dout_0 = 7'b111_1000; / 4 2 4'h8: dout_0 = 7'b000_0000; / | | 4'h9: dout_0 = 7'b001_1000; / -3- 4'ha: dout_0 = 7'b000_1000; 4'hb: dout_0 = 7'b000_0011; 4'hc: dout_0 = 7'b100_0110; 4'hd: dout_0 = 7'b010_0001; 4'he: dout_0 = 7'b000_0110; 4'hf: dout_0 = 7'b000_1110; 4'h0: dout_0 = 7'b100_0000; endcase case(indec_1) 4'h1: dout_1 = 7'b111_1001; / -0- 4'h2: dout_1 = 7'b010_0100; / | | 4'h3: dout_1 = 7'b011_0000; / 5 1 4'h4: dout_1 = 7'b001_1001; / | | 4'h5: dout_1 = 7'b001_0010; / -6- 4'h6: dout_1 = 7'b000_0010; / | | 4'h7: dout_1 = 7'b111_1000; / 4 2 4'h8: dout_1 = 7'b000_0000; / | | 4'h9: dout_1 = 7'b001_1000; / -3- 4'ha: dout_1 = 7'b000_1000; 4'hb: dout_1 = 7'b000_0011; 4'hc: dout_1 = 7'b100_0110; 4'hd: dout_1 = 7'b010_0001; 4'he: dout_1 = 7'b000_0110; 4'hf: dout_1 = 7'b000_1110; 4'h0: dout_1 = 7'b100_0000; endcase case(indec_2) 4'h1: dout_2 = 7'b111_1001; / -0- 4'h2: dout_2 = 7'b010_0100; / | | 4'h3: dout_2 = 7'b011_0000; / 5 1 4'h4: dout_2 = 7'b001_1001; / | | 4'h5: dout_2 = 7'b001_0010; / -6- 4'h6: dout_2 = 7'b000_0010; / | | 4'h7: dout_2 = 7'b111_1000; / 4 2 4'h8: dout_2 = 7'b000_0000; / | | 4'h9: dout_2 = 7'b001_1000; / -3- 4'ha: dout_2 = 7'b000_1000; 4'hb: dout_2 = 7'b000_0011; 4'hc: dout_2 = 7'b100_0110; 4'hd: dout_2 = 7'b010_0001; 4'he: dout_2 = 7'b000_0110; 4'hf: dout_2 = 7'b000_1110; 4'h0: dout_2 = 7'b100_0000; endcase case(indec_3) 4'h1: dout_3 = 7'b111_1001; / -0- 4'h2: dout_3 = 7'b010_0100; / | | 4'h3: dout_3 = 7'b011_0000; / 5 1 4'h4: dout_3 = 7'b001_1001; / | | 4'h5: dout_3 = 7'b001_0010; / -6- 4'h6: dout_3 = 7'b000_0010; / | | 4'h7: dout_3 = 7'b111_1000; / 4 2 4'h8: dout_3 = 7'b000_0000; / | | 4'h9: dout_3 = 7'b001_1000; / -3- 4'ha: dout_3 = 7'b000_1000; 4'hb: dout_3 = 7'b000_0011; 4'hc: dout_3 = 7'b100_0110; 4'hd: dout_3 = 7'b010_0001; 4'he: dout_3 = 7'b000_0110; 4'hf: dout_3 = 7'b000_1110; 4'h0: dout_3 = 7'b100_0000; endcase case(indec_4) 4'h1: dout_4 = 7'b111_1001; / -0- 4'h2: dout_4 = 7'b010_0100; / | | 4'h3: dout_4 = 7'b011_0000; / 5 1 4'h4: dout_4 = 7'b001_1001; / | | 4'h5: dout_4 = 7'b001_0010; / -6- 4'h6: dout_4 = 7'b000_0010; / | | 4'h7: dout_4 = 7'b111_1000; / 4 2 4'h8: dout_4 = 7'b000_0000; / | | 4'h9: dout_4 = 7'b001_1000; / -3- 4'ha: dout_4 = 7'b000_1000; 4'hb: dout_4 = 7'b000_0011; 4'hc: dout_4 = 7'b100_0110; 4'hd: dout_4 = 7'b010_0001; 4'he: dout_4 = 7'b000_0110; 4'hf: dout_4 = 7'b000_1110; 4'h0: dout_4 = 7'b100_0000; endcase case(indec_5) 4'h1: dout_5 = 7'b111_1001; / -0- 4'h2: dout_5 = 7'b010_0100; / | | 4'h3: dout_5 = 7'b011_0000; / 5 1 4'h4: dout_5 = 7'b001_1001; / | | 4'h5: dout_5 = 7'b001_0010; / -6- 4'h6: dout_5 = 7'b000_0010; / | | 4'h7: dout_5 = 7'b111_1000; / 4 2 4'h8: dout_5 = 7'b000_0000; / | | 4'h9: dout_5 = 7'b001_1000; / -3- 4'ha: dout_5 = 7'b000_1000; 4'hb: dout_5 = 7'b000_0011; 4'hc: dout_5 = 7'b100_0110; 4'hd: dout_5 = 7'b010_0001; 4'he: dout_5 = 7'b000_0110; 4'hf: dout_5 = 7'b000_1110; 4'h0: dout_5 = 7'b100_0000; endcase case(indec_6) 4'h1: dout_6 = 7'b111_1001; / -0- 4'h2: dout_6 = 7'b010_0100; / | | 4'h3: dout_6 = 7'b011_0000; / 5 1 4'h4: dout_6 = 7'b001_1001; / | | 4'h5: dout_6 = 7'b001_0010; / -6- 4'h6: dout_6 = 7'b000_0010; / | | 4'h7: dout_6 = 7'b111_1000; / 4 2 4'h8: dout_6 = 7'b000_0000; / | | 4'h9: dout_6 = 7'b001_1000; / -3- 4'ha: dout_6 = 7'b000_1000; 4'hb: dout_6 = 7'b000_0011; 4'hc: dout_6 = 7'b100_0110; 4'hd: dout_6 = 7'b010_0001; 4'he: dout_6 = 7'b000_0110; 4'hf: dout_6 = 7'b000_1110; 4'h0: dout_6 = 7'b100_0000; endcase case(indec_7) 4'h1: dout_7 = 7'b111_1001; / -0- 4'h2: dout_7 = 7'b010_0100; / | | 4'h3: dout_7 = 7'b011_0000; / 5 1 4'h4: dout_7 = 7'b001_1001; / | | 4'h5: dout_7 = 7'b001_0010; / -6- 4'h6: dout_7 = 7'b000_0010; / | | 4'h7: dout_7 = 7'b111_1000; / 4 2 4'h8: dout_7 = 7'b000_0000; / | | 4'h9: dout_7 = 7'b001_1000; / -3- 4'ha: dout_7 = 7'b000_1000; 4'hb: dout_7 = 7'b000_0011; 4'hc: dout_7 = 7'b100_0110; 4'hd: dout_7 = 7'b010_0001; 4'he: dout_7 = 7'b000_0110; 4'hf: dout_7 = 7'b000_1110; 4'h0: dout_7 = 7'b100_0000; endcase endendmodule/dividermodule div( output reg o_clk, /输出时钟 input rst_n, /复位 input i_clk /输入时钟 ); parameter N=50_000_000; /分频的倍数 parameter M=24_999_999; /N/2-1 reg 25:0cnt; always (posedge i_clk or negedge rst_n) begin if(!rst_n) cnt<=26'b0; else begin if(cnt=N-1) cnt<=26'b0; else cnt<=cnt+26'b1; end end always (posedge i_clk or negedge rst_n) begin if(!rst_n) o_clk<=0; else begin if(cnt<=M) o_clk<=1; else o_clk<=0; end end endmodulemodule div_zh(f,_500HzOut,_1KHzOut, ncR,CLOCK_50,s); input ncR,CLOCK_50,s; output _500HzOut,_1KHzOut,f; wire _1HzOut,_5HzOut; assign f=s?_5HzOut:_1HzOut; divn #(.WIDTH(26),.N(50000000) u0(.clk(CLOCK_50), .rst_n(ncR), .o_clk(_1HzOut) ); divn #(.WIDTH(17),.N(100000) u1(.clk(CLOCK_50), .rst_n(ncR), .o_clk(_500HzOut) ); divn #(.WIDTH(16),.N(50000) u2(.clk(CLOCK_50), .rst_n(ncR), .o_clk(_1KHzOut) ); divn #(.WIDTH(24),.N(10000000) u3(.clk(CLOCK_50), .rst_n(ncR), .o_clk(_5HzOut) ); endmodulemodule divn(o_clk,clk,rst_n); input clk,rst_n; output o_clk; parameter WIDTH=3; parameter N=6; reg WIDTH-1:0 cnt_p; reg WIDTH-1:0 cnt_n; reg clk_p; reg clk_n; assign o_clk=(N=1)? clk:(N0?(clk_p|clk_n):clk_p); always (posedge clk or negedge rst_n) begin if(!rst_n) cnt_p<=0; else if(cnt_p=N-1) cnt_p<=0; else cnt_p<=cnt_p+1; end always (posedge clk or negedge rst_n) begin if(!rst_n) clk_p<=0; else if(cnt_p<(N>>1) clk_p<=1; else clk_p<=0; end always (negedge clk or negedge rst_n) begin if(!rst_n) cnt_n<=0; else if(cnt_n=N-1) cnt_n<=0; else cnt_n<=cnt_n+1; end always (negedge clk or negedge rst_n) begin if(!rst_n) clk_n<=0; else if(cnt_n<(N>>1) clk_n<=1; else clk_n<=0; end endmodule2、生成的波形图:3、管脚分配:4、下载过程等的截图和注解:(1)为下载选择正确的实验板型号(2)下载使用的BDF电路图:各部分大图:(3)开始下载,选择Tools > Programmer,并单击Start.设计课题3:多功能数字钟系统(层次化设计),要求用实验箱下载。(1)基本功能:60秒60分24小时。(2)扩展功能:报时;每小时59分51,53,55,57秒低频报时,59秒高频报时。校时校分;时段控制;6点18点 输出灯不亮,其它时间灯亮。独立设计除上述3种功能以外的扩展功能,可加分。1、源程序(附注释)及波形图:(1)分钟、秒计时模块module m60(M,CP60M,CPM,RD);output7:0M;output CP60M;input CPM;input RD;reg 7:0M;wire CP60M;always(negedge RD or posedge CPM) begin if(!RD) /若RD为零 begin M7:0<=0; / 则计数清零 end else begin if(M7:4=5)&&(M3:0=9) /若计数到59 begin M7:0<=0; /则计数复位为0 end else begin if(M3:0=9) /若计数低四位为9 begin M3:0<=0; /将低四位置0 if(M7:4=5) /若高四位为5 begin M7:4<=0;end /则将高四位置0 else M7:4<=M7:4+1; /否则将高四位加1 end else M3:0<=M3:0+1; /若计数低四位不为9则加1 end end endassign CP60M=(M6&M4&M3&M0); /二进制 6 4 3 0位为1时CP60M改变endmodule(2)小时计时模块:module m24(H,CPH,RD);output 7:4H;input CPH,RD;reg7:0H;always (negedge RD or posedge CPH) begin if(!RD) H7:0<=0; /若RD为零 则计数清零 else begin if(H7:4=2)&&(H3:0=3) /若高四位为2低四位为3 begin H7:0<=0; /则计数清零 end else begin if(H3:0=9) /若低四位为9 begin H3:0<=0; /则低四位置0 H7:4<=H7:4+1; /高四位加1 end else H3:0<=H3:0+1; /若低四位不为9则低四位加1 end end endendmodule(3)校时校分模块:module xiaoshi2(CPM,CPH,CPS,CP60M,CP60S,SWM,SWH);output CPM,CPH;input SWM,SWH;input CPS,CP60S,CP60M;reg CPM,CPH;always(SWM or SWH or CPS or CP60S or CP60M) begin case(SWM,SWH) 2'b01:begin CPM<=CPS;CPH<=CP60M;end /若SWM和SWH分别为0和1 CPM的值为CPS CPH的值为CP60M 2'b10:begin CPM<=CP60S;CPH<=CPS;end /若SWM和SWH分别为1和0 CPM的值为CP60S CPH的值为CPS

    注意事项

    本文(fpga课程设计报告.doc)为本站会员(文库蛋蛋多)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开