《综合课程设计——模拟交通灯实验报告.docx》由会员分享,可在线阅读,更多相关《综合课程设计——模拟交通灯实验报告.docx(10页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、综合课程设计模拟交通灯实验报告 标 准 实 验 报 告学生姓名: 指导教师: 一、实验室名称: 二、实验项目名称:综合课程设计1模拟交通灯实验 三、实验原理: 1、交通信号灯基本转换原理 本实验所模拟的交通信号灯的转换原理如下图: 转移状态图 默认的初始状态为红灯状态,做 30 秒减计时。当时间从30 秒递减到0 秒后,红灯状态变为绿灯状态;重新30 秒减计时,递减到0 秒后,绿灯状态变为黄灯状态;做5 秒减计时,递减到0 秒后,黄灯状态变为红灯状态。如此循环进行转换。 2、自由按键电路 KEY1 对应P102,KEY2 对应P101。 3、八段数码管和动态显示原理 八段就是指数码管里有八个小
2、LED 发光二极管,通过控制不同的LED 发光二极管的亮灭来显示出不同的字形。数码管又分为共阴极和共阳极两种类型。共阴极就是将八个LED 的阴极连在一起,让其接地,这样给任何一个LED 的另一端高电平,它便能点亮;共阳极就是将八个LED 的阳极连在一起。其原理图如下: 数码管电路原理图 其中引脚图的两个COM 端连在一起就是公共端。共阴极数码管要将其接地,共阳极数码管将其接+5V 电源。一个八段数码管用来表示一位,多个数码管并列在一起即可构成多位数字,它们的段选线(即a,b,c,d,e,f,g,dp)都连在一起,而各自的公共端为位选线。显示时,数据都从段选线送入字符编码,而选中哪个位选线,那个
3、数码管便会被点亮。数码管的8 段即对应一个字节(Byte)的8 位,a 对应最低位,dp 对应最高位。所以如果想让数码管显示数字0,那么共阴极数码管的字符编码为00111111 即0x3f;共阳极数码管的字符编码为11000000 即0xc0。可以看出两个编码的各位正好相反。如下图所示: 8段数码管的共阴共阳差异 4、数码动态显示 数码管动态显示即轮流向各位数码管送出字符编码和相应的位选信号,利用发光二极管的余辉和人眼的视觉暂留作用,使人感觉好像各位的数码管都同时在显示。相比于静态显示,动态显示的亮度要差一些,所以在选择限流电阻时应略小于静态显示电路中的。 5、FPGA硬件管脚的配置 在实现时
4、首先要做的事是管脚的配置,根据程序的功能来配置管脚从而可以从实验板上观察到所需的状态。注意每一段的对应以及功能的设置。 四、实验目的: 1、进一步熟悉基于FPGA的硬件编程实现; 2、掌握如何实效编程; 3、熟悉程序基于ISE的仿真以及改错; 4、掌握编程数码显示的方法; 5、实现自主创新,编程实现自己的想法,并熟悉利用FPGA硬件实现编程; 五、实验内容: 编写 VHDL 代码、生成下载文件,下载设计到FPGA 实现如下功能: 模拟路口交通信号灯的红、黄、绿灯的变化过程,分别用三个LED 灯表示,并在数码管上动态显示当前状态剩余时间。要求红灯持续时间为30 秒,黄灯5 秒,绿灯30 秒。 六
5、、实验器材(设备、元器件): FPGA实验板一块、下载线一套、PC机一台 七、实验步骤: 1、打开桌面EDA文件夹中的ISE软件,并新建一个ADD_SUB工程; 2、在“Sources in Project”子窗口中右击,选择Add Source ,添加 VHDL设计文件,编写程序; 3、保存并进行语法检错,若有错误返回修改,直到没有错误提示为止; 4、连接好FPGA和下载线套装; 5、进行管脚配置,在“Sources in Project”子窗口中右击,选择Add Source ,选择添加 .ucf 文件,打开所添加的 .ucf 文件在对应的地 方输入管脚即可,或者是打开工程文件夹,找到AD
6、D_SUB.ucf文件以文 本文档方式打开,在里面编写形如:NET clk LOC = p18 ;(“”中 的为信号名称,=后面的为对应管脚)的管脚配置参数,编写完成后保存。 6、把程序进行仿真并载入到FPGA实验板上观察现象是否与理论一致; 7、若不符合则,返回修改程序,直到现象符合。 八、实验数据及结果分析: 1、设计思路: 根据实验要求发现,实验中首先需要1s的时钟来对三种灯进行计时,所用FPGA实验板的时钟为40MHz,所以在程序一开始需要对其进行处理。采用米利状态机来进行设计,并在状态中设置转换时间递减,当时间到零时触发状态转换。对于时间的显示利用数码管,由于有两位设置状态来实现转换
7、显示。在最前方再加以复位设置,便可完成。 2、实验程序: library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity jtd is port ( en : out std_logic_vector(7 downto 0); dataout : out std_logic_vector(7 downto 0); led0,led1,led2 :out std_logic; clk : in std_logic; rst : in s
8、td_logic ); end jtd; architecture arch of jtd is constant state0 : std_logic_vector(2 downto 0) := 000; constant state1 : std_logic_vector(2 downto 0) := 001; signal state : std_logic_vector(2 downto 0); signal count : std_logic_vector(18 downto 0); signal cnt : std_logic_vector(26 downto 0); signal
9、 tim : std_logic_vector(6 downto 0); signal num : std_logic_vector(4 downto 0); signal num1 : std_logic_vector(3 downto 0); signal num2 : std_logic_vector(3 downto 0); signal waittime0 : std_logic_vector(4 downto 0) := 11110; signal waittime1 : std_logic_vector(4 downto 0) := 00101; signal waittime2
10、 : std_logic_vector(4 downto 0) := 11110; signal dataout_temp : std_logic_vector(3 downto 0); TYPE state_type Is (S0,S1,S2); SIGNAL current_state,next_state : state_type; begin process(clk,rst) begin if(rst = 0) then state state state state IF waittime0=00000then next_state IF waittime1=00000then ne
11、xt_state IF waittime2=00000then next_state led0 led0 led0 0011101) then num1 0010011) then num1 0001001) then num1 en en NULL; end case; end process; process(dataout_temp) begin case dataout_temp is WHEN 0000 = dataout dataout dataout dataout dataout dataout dataout dataout dataout dataout NULL; end
12、 case; end process; end arch; 3、管脚配置 NET clk LOC = p18 ; NET dataout LOC = p140 ; NET dataout LOC = p139 ; NET dataout LOC = p141 ; NET dataout LOC = p4 ; NET dataout LOC = p5 ; NET dataout LOC = p6 ; NET dataout LOC = p7 ; NET dataout LOC = p10 ; NET en LOC = p21 ; NET en LOC = p20 ; NET en LOC = p
13、19 ; NET en LOC = p11 ; NET en LOC = p12 ; NET en LOC = p13 ; NET en LOC = p22 ; NET en LOC = p23 ; NET led0 LOC = p85 ; NET led1 LOC = p83 ; NET led2 LOC = p79 ; NET rst LOC = p102 ; 九、实验结论: 1、程序的FPGA硬件实现需要对其内部管脚进行编码; 2、在将程序烧录到FPGA板子上时特别注意对应位流文件要选择正确; 3、提高显示时钟频率能够让动态显示数码管显示不同的数值; 4、利用状态机有效地实现了,分时的输入数值和显示功能; 5,在综合时ISE软件会自动的综合掉对输出没有影响的信号。 十、总结及心得体会: 通过编写程序,深刻的学习到VHDL编程的精髓以及在编程过程中应该注意的一些语法之类的问题,在仿真过程中也清晰地学习到了利用FPGA进行设计仿真的流程以及需要注意的问题。通过课程设计大大的提升了动手能力以及对学习到的知识的应用实践。 十一、对本实验过程及方法、手段的改进建议: 由于所用FPGA实验板没有黄色LED所以建议换一块FPGA实验板 报告评分: 指导教师签字:
限制150内