欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    FPGA课程设计(一百进制、数字钟-交通灯)(共21页).doc

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

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

    FPGA课程设计(一百进制、数字钟-交通灯)(共21页).doc

    精选优质文档-倾情为你奉上F P G A课程设计报告 专 业:12级电子信息工程班 级: 一 班 姓 名: 李 威 学 号: 9 指导老师: 祝 宏 制作日期:2014年11月20号 1、任务书:第九周(10月27号至11月2号):一百进制可逆计数器的模块原理设计,代码编写,波形仿真,代码调试,模块封装以及管脚分配任务。第十周(11月3号至11月9号):完成第二道设计课题(交通灯)和第三道设计课题(多功能数字钟)模块原理设计,代码编写,波形仿真,代码调试,模块封装以及管脚分配任务。第十一周(11月10号至11月16号):在实验室使用ED2-115开发板进行功能模块实际演示。第十二周(11月17号至11月23号):完成对FPGA课程设计报告的书写。2、报告内容:设计课题一、一百进制可逆计数器1)实验要求:设计一个可控的100进制可逆计数器,要求用DE2-115开发板下载。(1) 计数器的时钟输入信号周期为1S。(2) 以十进制形式显示。(3) 有一个复位端clr和两个控制端plus和minus,在这些控制信号的作用下,计数器具有复位、增或减计数、暂停功能。clrplusminus功能0××复位为0110递增计数101递减计数111暂停计数图1-12)信号定义:分频模块:ncR: 暂停 ; CLOCK_50:500Hz分频 ;   s:1000Hz分频;译码模块:indec_07: 译码输入; outdec_07: 译码输出; 计数模块:clk : 脉冲 ; clear 复位端; plus:加计数使能端;          minus:减计 数使能端 ; cin:计数使能端 ;3)主要模块verilog代码及注示:  module count100(clk,clear,plus,minus,qout,cin);input clk,clear,plus,minus,cin; /输入由开关控制拨上为1,拨下为0 output 7:0 qout;reg7:0 qout; always (posedge clk) begin if (clear) qout<=0; /如果复位端为1则执行复位功能 else if (plus)&&(!minus) / 若plus为1且minus为0 时加计数 begin if (cin) /使能端为1时才进行计数 begin if (qout3:0=9) /模为100的计数 begin qout3:0<=0; if (qout7:4=9) qout7:4<=0; else qout7:4<=qout7:4+1; end else qout3:0<=qout3:0+1; end end else if(!plus)&&(minus) /若plus为0且minus为1进行减计数 begin if(cin) if (qout3:0=0) begin qout3:0<=9; if (qout7:4=0) qout7:4<=9; else qout7:4<=qout7:4-1; end else qout3:0<=qout3:0-1; end Else /若plus和minus均为1则暂停 qout<=qout; end endmodule 4) 模块封装图: 5)对应各模块功能仿真波形(数据分析)分析及结论 图1-2如图1-2所示当复位端clear为1时输出qout为0,当复位端clear为0时计数器开始正常计数us 图1-3如图1-3所示当复位端clear为0且使能端cin为1,plus为1,minus为0时进行加计数 图1-4如图1-4所示当复位端clear为0且使能端cin为1,plus为0,minus为1时进行减计数.6)选用芯片型号、定义芯片管脚号选用芯片型号:CycloneIV E芯片管脚:CLOCK_50InputPIN_Y22B2_N03.3-V SW4InputPIN_AB275B5_N12.5 VSW3InputPIN_AD275B5_N22.5 VSW2InputPIN_AC275B5_N22.5 VSW1InputPIN_AC285B5_N22.5 VSW0InputPIN_AB285B5_N12.5 VHEX06OutputPIN_H226B6_N02.5 VHEX05OutputPIN_J226B6_N02.5 VHEX04OutputPIN_L256B6_N12.5 VHEX03OutputPIN_L266B6_N12.5 VHEX02OutputPIN_E177B7_N22.5 VHEX01OutputPIN_F227B7_N02.5 VHEX00OutputPIN_G187B7_N22.5 VHEX16OutputPIN_U245B5_N02.5 VHEX15OutputPIN_U235B5_N12.5 VHEX14OutputPIN_W255B5_N12.5 VHEX13OutputPIN_W225B5_N02.5 VHEX12OutputPIN_W215B5_N12.5 VHEX11OutputPIN_Y225B5_N02.5 VHEX10OutputPIN_M246B6_N22.5 V 表1-2设计课题二、交通灯 1)实验要求:交通灯控制系统,要求用DE2-115开发板下载。(1) 设计一个十字路口交通信号灯的定时控制电路。要求红、绿灯按一定的规律亮和灭,绿灯亮时,表示该车道允许通行;红灯亮时,该车道禁止通行。并在亮灯期间进行倒计时,并将运行时间用数码管显示出来。(2)要求主干道每次通行时间为40秒,支干道每次通行时间为30秒。每次变换运行车道前绿灯闪烁,持续时间为5秒。即车道要由主干道转换为支干道时,主干道在通行时间只剩5秒钟时,绿灯闪烁5秒显示,支干道仍为红灯,以便主干道上已过停车线的车继续通行,未过停车线的车停止通行。同理,当车道由支干道转换为主干道时,支干道绿灯闪烁显示5秒钟,主干道仍为红灯。(3)定时器要求采用递减计时方式进行计时。注:TimeH、TimeL分别表示计数器的高位和低位HG、HR分别表示主干道的绿灯和红灯CG、CR分别表示支干道的绿灯和红灯两个定时时间:绿灯闪烁和绿灯停止闪烁4个状态:S0:主干道绿灯亮,支干道红灯亮。S1:主干道绿灯闪烁,支干道红灯亮。S2:支干道绿灯亮,主干道红灯亮。S3:支干道绿灯闪烁,主干道红灯亮。2) 顶层逻辑电路图组成、信号定义及原理简单叙述 图2-13)信号定义:分频模块:ncR:暂停 CLOCK_50:500Hz分频 s:1000Hz分频译码模块:indec_07:译码输入 outdec_07:译码输出功能模块:en:脉冲 acount:主干道计数器 bcount:支干道计数器 lampa0:主干道绿灯 lampa1:主干道红灯 lampb0:支干道绿灯 lampb1:支干道红灯4)交通灯代码:module traffic(clk,en,lampa0,lampb0,lampa1,lampb1,acount,bcount);output 7:0 acount,bcount; /acount 代表主干道计数器bcount代表支干道计数器output lampa0,lampb0,lampa1,lampb1; /0代表绿灯1代表红灯 a代表主干道b代表支干道input clk,en;reg 2:0 counta,countb;reg 7:0 numa,numb;reg tempa,tempb;reg 7:0 ared,agreen,bred,bgreen;reg lampa0,lampb0,lampa1,lampb1; always(en) if(!en) /设置灯亮的时间 begin ared <=8'h30; /主干道红灯亮30秒 agreen <=8'h40; /主干道绿灯亮40秒 bred <=8'h40; /支干道红灯亮40秒 bgreen <=8'h30; /支干道绿灯亮30秒 endassign acount=numa; /设置中间变量进行计数assign bcount=numb;always(posedge clk) begin if(en) begin /设置中间变量使计数可以循环进行 if(!tempa) /若tenpa为0 则继续往下执行 begin tempa<=1; case(counta) /用counta作为主干道状态选择0则亮绿灯1则亮红灯 0: begin numa<=agreen; lampa0<=1;lampa1<=0; counta<=1;end 1: begin numa<=ared; lampa0<=0;lampa1<=1;counta<=0;end endcase end else begin /开始倒计时 if(numa>1) if(numa3:0=0) begin numa3:0<=4'b1001; numa7:4<=numa7:4-1; end else numa3:0<=numa3:0-1; if(numa=2) tempa<=0; end end else begin lampa0<=0;lampa1<=1;tempa<=0;counta<=0; end if(numa<7)&&(counta=1)&&(numa>1) lampa0<=lampa0; /最后5秒/绿灯闪烁 endalways(posedge clk) begin if(en) begin if(!tempb) /设置中间变量使计数可以循环进行 begin tempb<=1; case(countb) /用countb作为支干道状态选择0则亮红灯1则亮绿灯 0: begin numb<=bred; lampb0<=0;lampb1<=1; countb<=1; end 1: begin numb<=bgreen; lampb0<=1;lampb1<=0;countb<=0;end endcase end else begin if(numb>1) /开始倒计时 if(numb3:0=0) begin numb3:0<=4'b1001; numb7:4<=numb7:4-1; end else numb3:0<=numb3:0-1; if(numb=2) tempb<=0; end end else begin lampb0<=0;lampb1<=1;tempb<=0;countb<=0; end if(numb<7)&&(numb>1)&&(lampa1=1) lampb0<=lampb0; /最后5秒绿灯闪烁 endendmodule 5) 模块封装图: 6)对应各模块功能仿真波形(数据分析)分析及结论 图2-2 如图2-2所示主干道绿灯(lampa0)亮40秒(acount)同时支干道红灯(lampb1)亮,最后5秒主干道绿灯闪烁,然后红绿灯转换。 图2-3 如图2-3所示支干道绿灯(lampb0)亮30秒(bcount)同时主干道红灯(lampb1)亮30秒,最后5秒支干道绿灯闪烁,然后红绿灯转换,最后如上述进行依次循环。7)选用芯片型号、定义芯片管脚号(列表格示意)及简述下载过程选用芯片型号:CycloneIV E芯片管脚:CLOCK_50InputPIN_Y22B2_N03.3-VHEX06OutputPIN_H226B6_N02.5 VHEX05OutputPIN_J226B6_N02.5 VHEX04OutputPIN_L256B6_N12.5 VHEX03OutputPIN_L266B6_N12.5 VHEX02OutputPIN_E177B7_N22.5 VHEX01OutputPIN_F227B7_N02.5 VHEX00OutputPIN_G187B7_N22.5 VHEX16OutputPIN_U245B5_N02.5 VHEX15OutputPIN_U235B5_N12.5 VHEX14OutputPIN_W255B5_N12.5 VHEX13OutputPIN_W225B5_N02.5 VHEX12OutputPIN_W215B5_N12.5 VHEX11OutputPIN_Y225B5_N02.5 VHEX10OutputPIN_M246B6_N22.5 VHEX26OutputPIN_W285B5_N12.5 VHEX25OutputPIN_W275B5_N12.5 VHEX24OutputPIN_Y265B5_N12.5 VHEX23OutputPIN_W265B5_N12.5 VHEX22OutputPIN_Y255B5_N12.5 VHEX21OutputPIN_AA265B5_N12.5 VHEX20OutputPIN_AA255B5_N12.5 VHEX36OutputPIN_Y194B4_N03.3-VHEX35OutputPIN_AF234B4_N03.3-V HEX34OutputPIN_AD244B4_N03.3-V HEX33OutputPIN_AA214B4_N03.3-V HEX32OutputPIN_AB204B4_N03.3-V HEX31OutputPIN_U215B5_N02.5 VHEX30OutputPIN_V215B5_N12.5 VLEDG1OutputPIN_E227B7_N02.5 VLEDG0OutputPIN_E217B7_N02.5 VLEDR1OutputPIN_F197B7_N02.5 VLEDR0OutputPIN_G197B7_N22.5 VSW1InputPIN_AC285B5_N22.5 VSW0InputPIN_AB285B5_N12.5 V 表2-1设计课题三、多功能数字钟1) 实验要求:多功能数字钟系统(层次化设计),要求用DE2-115开发板下载。(1)基本功能:60秒60分24小时。(2)扩展功能:报时;每小时59分51,53,55,57秒低频报时,59秒高频报时。校时校分;时段控制;6点18点 输出灯不亮,其它时间灯亮。独立设计除上述3种功能以外的扩展功能,可加分。2) 信号定义:分频模块:ncR:暂停 CLOCK_50:500Hz分频 s:1000Hz分频译码模块:indec_07:译码输入 outdec_07:译码输出功能模块 clk:原始脉冲 clks,clkm:秒钟、分钟的进位脉冲light:背景灯 remain1、remain2:整点报时信号outh、outm、outs:时钟、分钟、秒钟输出端alarm:闹钟输出3)功能模块代码、封装图以及仿真波形图:时钟模块代码module hours(clkm,outh,light); /时钟模块:含24进制以及背景灯时段控制output outh,light; /输出端口:outh(时钟显示),light(背景灯)reg7:0 outh; reg light; input clkm; /输入端口:clkm(由分钟进位产生的时钟信号)always(posedge clkm)begin/*二十四进制的实现(始)*/ if(outh3:0<9) /低位小于9的时候begin if(outh3:0=3&&outh7:4=2) /到达23后下一个状态为0begin outh3:0=0; outh7:4=0;end elseouth3:0=outh3:0+1; /未到23,低位加一end else /低位等于9的时候begin outh7:4=outh7:4+1; /高位加1 outh3:0=0; /低位为0end/*二十四进制的实现(终)*/*背景灯时段控制的实现*/ if(outh7:4<1) /高位为0的时候(0:009:59)begin if(outh3:0<6) /低位小于6(0:005:59)背景灯亮light=1; elselight=0;end else /当高位不小于1(10:0023:59)begin if(outh3:0>=8|outh7:4>1) /当高位大于1(20:0023:59)或低位大于等于8(18:0019:59)背景灯亮light=1; elselight=0;endendendmodule分钟模块代码module minute(clks,outm,clkm,sound); /分钟模块:含60时进制以及整点报时output outm,clkm,sound; /输出端口:outm(分钟显示),clkm(分钟进位信号)sound(整点报时信号(59分)reg clkm,sound; reg7:0 outm;input clks; /输入端口:clks(秒钟进位产生的时钟信号)always(posedge clks)begin if(outm3:0=9) /当低位为9begin if(outm3:0=9&&outm7:4=5) /如果此时为59分,下个时钟上升沿来临begin /分钟归0,产生进位信号,整点报时信号清零 outm3:0=0; outm7:4=0; clkm= 1; sound=0;end else /否则高位加1,低位为0begin outm7:4=outm7:4+1; outm3:0=0;end end else /如果低位不为(小于)9,begin if(outm3:0=8&&outm7:4=5) /如果此时是58分,当下一个时钟上升沿来临begin outm3:0=outm3:0+1; /低位加1(59),整点报时为1,进位信号清零 sound=1; clkm=0;end else /此时不是58分,低位加1,进位信号清零begin outm3:0=outm3:0+1; clkm=0;endendendendmodule秒钟模块代码module second(clks,outs,clk,sound,remain1,remain2); /秒钟模块output outs,clks,remain1,remain2; /remain1,remain2为整点报时的两种信号reg clks,remain1,remain2;reg7:0 outs;input clk,sound;always(posedge clk)begin if(outs3:0=9)begin if(outs3:0=9&&outs7:4=5)begin outs3:0=0; outs7:4=0; clks=clks+1;end elsebegin outs7:4=outs7:4+1; outs3:0=0;endend else begin outs3:0=outs3:0+1; clks=0; end if(sound) /当分钟到达59分,sound信号来临 begin if(outs7:4=5&&outs3:0>0&&outs3:0<9) /5158秒信号灯1开始闪烁 remain1=remain1; else if(outs7:4=5&&outs3:0=9) /59秒信号灯2开始闪烁 remain2=1; else begin remain1=0; remain2=0; end endendendmodule时钟电路部分的各模块封装图:时钟电路部分的顶层模块结构:校时校分功能模块校时校分功能可以通过增大时钟和分钟的时钟信号频率来实现,在这个项目里我给通过一个选择模块来改变他们各自的时钟信号频率选择模块代码:module choice(ina,inb,inc,out);input ina,inb,inc;output out;reg out;always (ina or inb or inc)beginif(inc)out=ina; /inc为高电平,选择ina输出elseout=inb; /inc为低电平,选择inb输出endendmodule其中我们可以将ina看做分频模块的输出时钟频率(1Hz或5Hz),将inb看做秒钟或分钟的实际进位信号频率(1/60Hz或1/3600Hz),当inc为低电平,时钟电路正常运转,当inc为高电平时,由于时钟与分钟的时钟信号不再是低位的进位信号,而是分频模块的输出时钟频率,此频率很高故而实现短时间内精确校时校分,顶层模块的线路连接也是按照此种连接方式进行。闹钟功能模块module alarmH(clk,keyh,outh,seth,sign) ; /闹钟功能的时钟模块output sign,seth;reg sign; /seth:闹钟的时钟时间输出 sign:闹铃信号(时钟部分)input 7:0 outh;input clk,keyh; /keyh:闹钟的时钟时间设置reg 7:0 seth;always(posedge clk)begin if(keyh) /当闹钟时钟设置端置1,开始设定闹钟时钟/*二十四进制(始)*/ begin if(seth3:0<9) begin if(seth3:0=3&&seth7:4=2) begin seth3:0=0; seth7:4=0; end else seth3:0=seth3:0+1; end else begin seth7:4=seth7:4+1; seth3:0=0; endend/*二十四进制(终)*/elseseth7:0=seth7:0;if(outh7:0=seth7:0) /如果闹钟设置的时钟与实际时钟一致sign=1; /*时钟部分的闹钟信号置1(当时钟部分与分钟部分闹钟信号都为1,开始闹铃)*/elsesign=0;endendmodulemodule alarmM(clk,keym,outm,setm,sign); /闹钟功能的分钟模块output sign,setm;reg sign; /seth:闹钟的分钟时间输出 sign:闹铃信号(时钟部分)input 7:0 outm;input clk,keym; /keyh:闹钟的分钟时间设置reg 7:0 setm;always(posedge clk)begin if(keym) /当闹钟分钟设置端置1,开始设定闹钟分钟/*六十进制(始)*/ begin if(setm3:0=9) begin if(setm3:0=9&&setm7:4=5) begin setm3:0=0; setm7:4=0; end elsebegin setm7:4=setm7:4+1; setm3:0=0;end end else setm3:0=setm3:0+1;end/*六十进制(终)*/elsesetm7:0=setm7:0;if(outm7:0=setm7:0) /如果闹钟设置的时钟与实际时钟一致sign=1; /*时钟部分的闹钟信号置1(当时钟部分与分钟部分闹钟信号都为1,开始闹铃)*/else sign=0;endendmodule选择显示模块module show(set,out,times,key); /选择显示模块input7:0 out,set; /set: 闹钟输出;out:时钟输出input key; /key:选择端reg7:0 times;output times;always(out or set or times)beginif(key) /如果key为1,数码管选择显示闹钟输出times7:0=set7:0;else /如果key为0,数码管选择显示时钟输出times7:0=out7:0;endendmodule选择显示模块是为了显示闹钟设置的时间,当key置1时数码管所显示的是我们设置好的闹钟时间,置0则显示正常时钟闹钟功能模块封装图:整体电路连线图:时钟模块(hour)仿真波形图:分钟模块(minute)仿真波形图:时间电路模块(time)仿真波形图:多功能数字钟整体电路(含闹钟模块)仿真波形图:1) 整点报时及背景灯:2)闹钟功能(设置8:22分闹铃):3)闹钟效果(alarm持续一分钟):3、下载过程:(1)在Quaters11.0中点击file中的open project打开在9.1中做好的工程(2)选择芯片:EP4CE115F29C7(3)输入管脚列表(4)单击Assignment的import选项找到excel管脚信息文件(5)输入成功后,进行编译(6)编译无误后,单击Tool的programmer单击start进行下载4、关键字: 一百进制、交通灯、数字钟、FPGA、verilog、Quaters5、课程设计设计中遇到问题及解决方法 一百进制里在波形仿真时开始将输出qout设为十进制显示,发现结果很混乱,费了一番脑筋后终于发现问题所在,qout应该以十六进制显示,因为在程序

    注意事项

    本文(FPGA课程设计(一百进制、数字钟-交通灯)(共21页).doc)为本站会员(飞****2)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

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




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开