版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGE数字电路课程设计报告 PAGEPAGE18 数字电路课程设计报告数字电路课程设计报告(课题名称)学院名称:电信学院专业:电子班级:测控2班姓名:虞波学号:08314208指导教师姓名:翟丽芳合作者姓名:董亮2010年12月目录前言……………………(2)一:交通灯的设计任务……(2)二:题目分析与整体构思……(2)三:硬件电路设计………(3)3.1分频器设计………(3)3.2控制器设计…………(3)3.3计数器设计………(4)3.4分位译码电路设计…………………(4)3.5数码管驱动设计…………………(5)3.6顶层文件设计…………………(5)四:程序设计……………………(6)4.1分频器设计………(6)4.2控制器设计…………(8)4.3计数器设计………(9)4.4分位译码电路设计…………………(11)4.5数码管驱动设计…………………(12)4.6顶层文件设计…………………(16)五:设计创新…………………(17)六:心得体会……………………(17)七:参考文献……(18)前言伴随着社会的发展以及人类生活水平的提高,EDA技术在电子信息,通信,自动,控制及计算机应用等领域的重要性日益突出。随着技术市场与人才市场对DEA的不断的增加,交通的问题日益突出,单单依靠人力来指挥交通已经不可行了,所以,设计交通灯来完成这个需求就显的越加迫切了.为了确保十字路口的行人和车辆顺利、畅通地通过,往往采用电子控制的交通信号来进行指挥。以下就是运用数字电子设计出的交通灯:其中红灯亮,表示该条路禁止通行;黄灯亮表示停车;绿灯亮表示允许通行。以下就是我所设计的软件部分:一:交通灯的设计任务设计一个十字路口的交通灯控制系统,用LED发光二极管显示车辆通过的方向(东西和南北各一组),用数码管显示该方向的剩余时间。要求:工作顺序为东西方向绿灯亮55秒,同时南北方向红灯55秒,黄灯5秒闪烁。东西方向黄灯5秒,同时南北方绿灯30秒。东西方向红灯30秒,同时南北方向黄灯5秒。依次重复。有紧急事件时允许将两方向一直开红灯,蜂鸣器响,车辆禁行。二:题目分析与整体构思(1)该交通灯控制器应具备的功能设东西方向比南北方向的车流量大,因此红、黄、绿灯的时长不相同,定为东西红灯30sec,黄灯5sec,绿灯55sec,南北方向红灯55sec,黄灯5sec,绿灯30sec同时用数码管指示当前东西方向状态(红、绿)剩余时间。另外,设计一个紧急状态,当紧急状态出现时,两个方向都禁止通行,指示红灯。紧急状态解除后,重新计数并指示时间。(2)实现方案一从题目中计数值与交通灯的亮灭的关系如图(1)所示三:硬件电路设计(1)分频器分频器实现的是将高频时钟信号转换成底频的时钟信号,用于触发控制器、计数器和扫描显示电路。该分频器实现的是1000分频,将50M赫兹的时钟信号分频成50000赫兹的时钟信号。该分频器实现的是50000分频,将50000赫兹的时钟信号分频成1赫兹的时钟信号。(2)控制器设计控制器的作用是根据计数器的计数值控制发光二极管的亮、灭,以及输出倒计时数值给七段数码管的分位译码电路。此外,当检测到特殊情况(HOLD=‘1’)发生时,无条件点亮红灯的二极管。本控制器可以有两种设计方法,一种是利用时钟烟的下降沿读取前级计数器的计数值,然后作出反应;另一种则是将本模块设计成纯组合逻辑电路,不需要时钟驱动。这两种方法各有所长,必须根据所用器件的特性进行选择:比如有些FPGA有丰富的寄存器资源,而且可用与组合逻辑的资源则相对较少,那么使用第一种方法会比较节省资源;而有些CPLD的组合逻辑资源则比较多,用第二种方法可能更好。(3)计数器设计这里需要的计数器的计数范围为0-90。计到90后,下一个时钟沿回复到0,开始下一轮计数。此外,当检测到特殊情况(HOLD=‘1’)发生是,计数器暂停计数。(4)分位译码电路设计因为控制器输出的到计时数值可能是1位或者2位十进制数,所以在七段数码管的译码电路前要加上分位电路(即将其分为2个1位的十进制数,如25分为2和5,7分为0和7)。与控制器一样,分位电路同样可以由时钟驱动,也可以设计成纯组合逻辑电路。控制器中,引入了寄存器。本次分位电路就用组合逻辑电路实现。(5)数码管驱动设计串行连接,即每个数码管对应的引脚都接在一起(如每个数码管的a引脚都接到一起,然后再接到CPLD/FPGA上的一个引脚上),通过控制公共端为高电平控制相应数码管的亮、灭(共阴极数码管的公共端为高电平时,LED不亮;共阳极的公共端为低电平时,LED不亮)。串行法的优点在于消耗的系统资源少,占用的I/O口少,N个数码管只需要(7+N)个引脚(如果需要小数点,则是(8+N)个引脚)。其缺点是控制起来不如并行法容易。(7)下图为交通灯控制器的顶层文件连接图四:程序设计⑴分频的设计LIBRARYIEEE;USEIEEE.Std_Logic_1164.ALL;ENTITYFreDeviderISPORT(Clkin:INStd_Logic;Clkout:OUTStd_Logic);END;ARCHITECTUREDeviderOFFreDeviderISCONSTANTN:Integer:=499;Signalcounter:Integerrange0toN;signalClk:Std_Logic;BEGINPROCESS(Clkin)beginIFrising_edge(Clkin)THENIFCounter=Nthencounter<=0;Clk<=notclk;elsecounter<=counter+1;endif;endif;endprocess;clkout<=clk;end;波形分析:由于两个波形频率相差过大,因此波形图中难以直观看出之间的关系。但通过其数值的关系,可看出1000分频。LIBRARYIEEE;USEIEEE.Std_Logic_1164.ALL;ENTITYFreDevider1ISPORT(Clkin:INStd_Logic;Clkout:OUTStd_Logic);END;ARCHITECTUREDevider1OFFreDevider1ISCONSTANTN:Integer:=24999;signalcounter:Integerrange0toN;signalClk:Std_Logic;BEGINPROCESS(Clkin)beginIFrising_edge(Clkin)THENIFCounter=Nthencounter<=0;Clk<=notclk;elsecounter<=counter+1;endif;endif;endprocess;clkout<=clk;end;此处为50000分频。(2)控制设计控制器的作用是根据计数器的计数值控制发光二极管的亮、灭,以及输出倒计时数值给七段译管的分译码电路。此外,当检测到特殊情况(Hold=‘1’)发生时,无条件点亮红色的发光二极管LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYcountrollerISPORT(Clock:INSTD_LOGIC;Hold:instd_logic;CountNum:inINTEGERNumA:outINTEGERRANGE0TORedA,GreenA,YellowA:outstd_logic;RedB,GreenB,YellowB:outstd_logic);END;ARCHITECTUREbehaviorOFCountrollerISBEGINprocess(Clock)BEGINIFfalling_edge(Clock)THENIFHold='1'THENRedA<='1';RedB<='1';GreenA<='0';GreenA<='0';YellowA<='0';YellowB<='0';ELSIFCountNum<=54THENNumA<=55-CountNum;RedA<='0';GreenA<='1';YellowA<='0';ELSIFCountNum<=59THENNumA<=60;RedA<='0';GreenA<='0';YellowA<='1';ELSENumA<=90-CountNum;RedA<='1';GreenA<='0';YellowA<='0';ENDIF;IFCountNum<=54THENRedB<='1';GreenB<='0';YellowB<='0';ELSIFCountNum<=84THENRedB<='0';GreenB<='1';YellowB<='0';ELSeRedB<='0';GreenB<='0';YellowB<='1';ENDIF;endif;ENDPROCESS;END;(3)计数器的设计这里计数器的计数范围为0—90S。计到45后,下一个时钟沿回复到0,开始下一轮计数.此外,当检测到特殊情况(Hold=‘1‘)发生时,计数器暂停计数。程序如下:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYcounterISPORT(clock:INSTD_LOGIC;Hold:instd_logic;countNum:BuFFeREND;ARCHITECTUREbehaviorOFcounterISBEGINProcess(Clock)BEGINIFrising_edge(Clock)THENIFHold='1'thencountNum<=countNum;ELSEIFcountNum=90THENcountNum<=0;ELSEcountNum<=countNum+1;ENDIF;ENDIF;ENDPROCESS;END;波形分析:由图可知在脉冲作用下,东西方向的红绿黄灯,南北方向的红绿黄灯,皆按照程序中要求的实现。(4)分位译码电路设计LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYFenweiISPORT(Numin:INintegerRANGE0TONumA,NumB:OUT);END;ARCHITECTUREbehaviorOFFenweiISBEGINprocess(Numin)BEGINIFNumin>=60THENNumA<=10;NumB<=10;elsIFNumin>=50THENNumA<=5;NumB<=Numin-50;elsIFNumin>=40THENNumA<=4;NumB<=Numin-40;ELSIFNumin>=30THENNumA<=3;NumB<=Numin-30;ELSIFNumin>=20THENNumA<=2;NumB<=Numin-20;ELSIFNumin>=10THENNumA<=1;NumB<=Numin-10;ELSENumA<=0;NumB<=Numin;ENDIF;ENDPROCESS;END;(5)数码管驱动设计LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYbcd_dataISPORT(bcd_data:inSTD_LOGIC_VECTOR(3downto0);segout:outSTD_LOGIC_VECTOR(6downto0));END;ARCHITECTUREbehaviorOFbcd_dataISBEGINprocess(bcd_data)BEGINcasebcd_dataiswhen"0000"=>segout<="1111110";when"0001"=>segout<="0110000";when"0010"=>segout<="1101101";when"0011"=>segout<="1111001";when"0100"=>segout<="0110011";when"0101"=>segout<="1011011";when"0110"=>segout<="0011111";when"0111"=>segout<="1110000";when"1000"=>segout<="1111111";when"1001"=>segout<="1110011";when"1010"=>segout<="0000000";whenothers=>null;ENDCASE;ENDPROCESS;END;LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_unsigned.ALL;ENTITYdtsmISPORT(clk:inSTD_LOGIC;NumA,NumB,NumC,NumD:inSTD_LOGIC_VECTOR(3downto0);segout1:outSTD_LOGIC_VECTOR(6downto0);led_sel:outSTD_LOGIC_VECTOR(3downto0));ENDdtsm;architecturebhvofdtsmiscomponentbcd_dataisport(bcd_data:inSTD_LOGIC_VECTOR(3downto0);segout:outSTD_LOGIC_VECTOR(6downto0));endcomponent;signalx:STD_LOGIC_VECTOR(3downto0);signalq:STD_LOGIC_VECTOR(1downto0);beginp1:process(clk)beginifclk'eventandclk='1'thenQ<=Q+'1';endif;endprocess;p2:process(Q)begincaseQiswhen"00"=>led_sel<="1110";x<=NumD;when"01"=>led_sel<="1101";x<=NumC;when"10"=>led_sel<="1011";x<=NumB;when"11"=>led_sel<="0111";x<=NumA;whenothers=>null;endcase;endprocess;u1:bcd_dataend;波形分析:由上图可看出倒计时函数是正确的。由于采用的是动态显示可能仿真的波形看的不是很明显!(6)顶层文件设置libraryieee;useieee.std_logic_1164.all;entityjiaotongdengisport(clk1:instd_logic;reset1:instd_logic;hold1:instd_logic;segout2:outstd_logic_vector(6downto0);led_sel1:outstd_logic_vector(3downto0);reda1,yellowa1,greena1:outstd_logic;redb1,yellowb1,greenb1:outstd_logic);endjiaotongdeng;architectureaa11ofjiaotongdengiscomponentFreDeviderPORT(Clkin:INStd_Logic;Clkout:OUTStd_Logic);ENDcomponent;componentFreDevider1PORT(Clkin:INStd_Logic;Clkout:OUTStd_Logic);ENDcomponent;componentcountrollerPORT(Clock:INSTD_LOGIC;Hold:instd_logic;CountNum:inINTEGERNumA:outINTEGERRANGE0TORedA,GreenA,YellowA:outstd_logic;RedB,GreenB,YellowB:outstd_logic);ENDcomponent;componentcounterPORT(clock:INSTD_LOGIC;reset:instd_logic;Hold:instd_logic;countNum:BuFFeRENDcomponent;componentFenweiPORT(Numin:INintegerRANGE0TONumA,NumB:OUT);ENDcomponent;componentdtsmPORT(clk:inSTD_LOGIC;NumA,NumB:inIntegersegout1:outSTD_LOGIC_VECTOR(6downto0);led_sel:outSTD_LOGIC_VECTOR(3downto0));ENDcomponent;signala,b:std_logic;signalc:INTEGERsignald:INTEGERRANGE0TOsignale,f:Integerbeginu1:FreDeviderportmap(clkin=>clk1,clkout=>a);u2:FreDevider1portmap(clkin=>a,clkout=>b);u3:counterportmap(clock=>b,reset=>reset1,hold=>hold1,countnu
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 海理定理与图像去噪中的方差估计
- 创新生态柔情自似水实施产业创新发展行动方案
- 基于深度学习的图像粉笔画效果生成结题报告
- 租赁合同物业租赁合同
- 四年级信息技术下册 神奇的邮箱大揭秘教案 青岛版
- 人教A版(2019)必修第一册第四章指数函数与对数函数4.3对数教案
- 四川省成都市高中化学 第二章 化学反应与能量 化学反应速率与限度教案 新人教版必修2
- 水平四(七年级)自然地形跑教学设计
- 高中语文 第七单元 二 子圉见孔子于商太宰教学设计3 新人教版选修《先秦诸子选读》
- 祖国祖国我们爱你教学设计小学音乐三年级下册人音版(主编:曹理)
- 食品质量安全培训
- 混凝土道路施工课件
- 人工授精合同范本
- 冬春季常见传染病防控知识讲座-课件
- 互联网护理服务培训
- 一带一路风险课题申报书
- 牙科显微镜讲解
- 锅炉制图培训课件
- 《铁路劳动安全》高职铁道类专业安全教育培训全套教学课件
- 【MOOC】电工学-西北工业大学 中国大学慕课MOOC答案
- 诺贝尔生理学或医学奖史话(华中师范大学)知到智慧树章节答案
评论
0/150
提交评论