1、architecture one of fenpingqi issignal counter:integer range 0 to 4999999;Beginprocess (CLR,CLK)if(CLK=1 and CLKevent) then if CLR= then counter=0; elsif counter =4999999 then q=not q; else =counter+1; end if;end if; end process;end one;2、开关控制部分的ASM图i、j、k、分别代表开关状态;1表示开关闭合,为高电平;0表示开关断开为低电平。当开关处于不同的状态
2、时,分别给变量G不同的值,用来实现控制通行时间。x=i&j&k;cnt:process (clk)variable s:integer range 0 to 49;variable g:variable nclr,en:bit; if x=001then g:=29;elsif xrm=;ymgm rfyfgfif s=g thenstate =b;nclr:en:Elsestateif s=3 then=c;when c=d;when d=end case;4、总原理图1、电路连接图2、分频器模块 3、交通灯控制器模块4、波形仿真仿真图一仿真图二5、硬件仿真:为了能对所设计的红绿灯交通灯控制
3、器电路进行硬件测试,应将其输入输出信号锁定在开发系统的目标芯片引脚上,并重新编译,然后对目标芯片进行编程下载,完成红绿灯交通灯控制器的最终开发,其硬件测试示意图如图6-62。不失一般性,本设计选用的EDA开发平台为GW48电路模式为,选择目标器件为Cylone系列EP1C3T144C8芯片。 锁定引脚时将CLK接至clock2(接受1kHz的时钟频率);内部自复位信号同键3(PIO8)相连;手动、自动切换钮(1:自动、0手动)接键4(PIO9);:红绿灯状态切换键(每按一次就切换一个状态)接键5(PIO13); R1接发光二级管D8(PIO23)用于指示南北路口红灯;G1接发光二级管D7(PI
4、O22)用于指示南北路口绿灯;Y1接发光二级管D6(PIO21)用于指示南北路口黄灯;R0接发光二级管D5(PIO20)用于指示东西路口红灯;G0接发光二级管D4(PIO19)用于指示东西路口绿灯;Y0接发光二级管D3(PIO18)用于指示东西路口红灯;NEXT_S 接发光二级管D1(PIO16)用于转态指示。引脚锁定完成后,重新对该工程进行编译,综合适配后将配置数据下载入GW48实验平台的FPGA中(有关CLK等引脚在FPGA芯片EP1C6Q240C8引脚中的序号,请参见EDA书后的附录的附表)。选模式5,情况一(红绿灯间隔30秒,黄绿间隔5秒),设定最右边三个灯(从右到左)为支路灯:红灯、
5、绿灯、黄灯;紧接着为主路:红灯、绿灯、黄灯(6号灯已坏顺延到7号灯);仿真图片如下:图一:支路绿灯,主路红灯图二:支路黄灯,主路红灯图三:支路红灯,主路绿灯图四:支路红灯,主路黄灯图五:五、实验目的1. 熟练掌握VHDL 语言和MAX+ PLUSII 软件的使用;2. 理解状态机的工作原理和设计方法;3. 掌握利用EDA 工具进行自顶向下的电子系统设计方法六、实验步骤1.将实验系统上RS232接口与计算机串行口相连。2.用VHDL将两个方案的源程序输入MAX+ PLUSII 软件中。3.编译程序并进行引脚分配,最后将程序下载到器件中去。七、结果分析本次课程设计基本上满足了任务的设计要求,可以通
6、过开关手动设置主干道和支道每次通行的时间分别为为30s、40s、50s,从而控制通行时间长短的转换;各个状态之间的转化及各个状态的通行时间也可以满足“主干道和支干道自动循环。主干道和支道每次通行的时间为30s,而在两个状态交换过程出现的主黄,支红和主红,支黄状态,持续时间都为4s”的设计要求。但是设计也存在一定的缺陷,设计只能完成当开关i,j,k只有一个为高电平时使交通灯正常工作,,其他状态时定义G=0,这时交通灯不能正常工作。例如当X=I&J&K=101,时,其波形仿真各个状态时间通行时间长短会出现差错,如下图 然而,这种状况在实际生活中是不允许出现的。其解决方法是:在各个when语句后增加
7、一条if判断语句,判断如果g等于0,则保持原状态,如果g不等于0,则执行原来方案中的状态转换语句。八、硬件要求主芯片EPF10K10LC84-4;6个LED灯(红、黄、绿各两个);四个开关。九、心得体会通过课程设计能提高学生对所学知识的综合应用能力,能全面检查并掌握所学内容,在这学期的课程设计中,在收获知识的同时,还收获了阅历,收获了成熟,在此过程中,我们通过查找资料,请教老师,以及不懈的努力,不仅培养了独立思考、动手操作的能力,在各种其它能力上也都有了提高。更重要的是,我们学会了很多学习的方法。通过本学期的这次的课程设计与几次实验,我学会了语言的一些基本用法,应用了原来不会或者不熟练的句型,
8、如process进程,也学会了一些基本功能的实现方法,如分频,状态控制等。虽然这次实验遇到的问题不少,但是在老师以及同学的帮助下,我都顺利地解决了,并为将来的实践积累了宝贵的经验和教训。通过经常和老师、同学交流,以便及时发现自己在实验中的纰漏和不足,促进进步。EDA设计中程序调试最为重要,我在编完各模块程序之后,编译查错最初有很多错误,有输入错误,语法错误,通过反复的修改最终通过了编译。必须注意工程名和实体名的一致,在仿真无误的情况下把程序下载到是芯片中,进行硬件的调试。逻辑正确和仿真真确并不代表着实际实验的正确,通常情况下,要适当地调整逻辑以适应硬件。要特别注意仿真时出现的毛刺和偏差,到底是
9、由于仿真设置不合理还是仿真结果确实有问题。这次课程设计虽然结束了,也留下了很多遗憾,因为由于时间的紧缺和许多课业的繁忙,并没有做到最好,但是,最起码我们没有放弃,它是我们的骄傲!相信以后我们会以更加积极地态度对待我们的学习、对待我们的生活。实验的顺利完成,与老师的热心指导是分不开的,最后十分感谢胡辉老师的认真负责的工作,让我受益匪浅!十、参考文献EDA技术与实验 机械工业出版社 李国洪、胡辉、沈明山EDA技术实验与课程设计 清华大学出版社 曹新燕、周凤臣、聂春燕EDA技术综合应用实例与分析 西安电子科技大学出版社 谭会生、翟遂春附件1、顶层设计代码library ieee; use JiaoT
10、ongDeng is port(clr,clk,i,j,k:in std_logic; rm,ym,gm,rf,yf,gf:out std_logic; recount: NEXT_S:out std_logic);end entity JiaoTongDeng;architecture JTD of JiaoTongDeng is component fenpingqi port(CLR,CLK: q:buffer std_logic); end component; component kongzhi port(clk,i,j,k: component count_down port(cl
11、k,reset, ena_1Hz, recount: in std_logic; load: in std_logic_vector(7 downto 0); seg7:out std_logic_vector(15 downto 0); next_state: out std_logic);signal Q, signal recount_1,signal next_state_1:std_logic;begin u1: fenpingqi port map(CLR=clr,CLK=clk,q=Q); u2: kongzhi port map(i=i,j=j,k=k,clk=Q,rm=rm,
12、ym=ym,gm=gm1,rf=rf,yf=yf,gf=gf); u3:count_down port map(RE,CLK,ena_1Hz_1,recount_1,load,S,next_state_1); NEXT_S=next_state_1;end architecture JTD;分频器代码 use fenpingqi isport (CLR,CLK:in std_logic ;end fenpingqi;3、交通灯控制器代码 use kongzhi isport (clk,i,j,k:end kongzhi; architecture arc of kongzhi istype s
13、tate_type is (a,b,c,d);signal state:state_type;signal x:std_logic_vector(2 downto 0);if (clk if nclr= if s=g thenend process cnt;end arc;4、两位七段译码输出显示代码LIBRAYR IEEE;USE count_down IS port(reset, clk, ena_1Hz, recount:end;ARCHITECTURE BEHAVIOR of count_down IS signal cnt_ff:std_logic_vector(7 downto 0); count:process(clk,reset) begin if (reset=) then cnt_ff00000000 seg70000000000000000 elsif (clk if ena_1Hz= if (recount=load-1; else=cnt_ff-1; case conv_integer(cnt_ff) is-dt gfedcba(十位) dt gfedcba(个位) end case; next_state = when cnt_ff=1 else end BEHAVIOR;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1