首页 中南大学EDA实验报告

中南大学EDA实验报告

举报
开通vip

中南大学EDA实验报告中南大学 实 验 报 告 课    程:EDA 技术 班    级: 学    号:                  姓    名:                  指导老师: 实验时间:2013年6月 EDA---交通灯实验 1、实验目的 通过此实验让用户进一步了解、熟悉和掌握 CPLD/FPGA 开发软件的的使用方法及 Verilog HDL 的编程方法。学习简单状态机的设计和硬件测试。 2、实验器材 主要仪器设备 1、微机 1台 2、QuartusII集成开发软件 1套 3、EDA实验...

中南大学EDA实验报告
中南大学 实 验 报 告 课    程:EDA 技术 班    级: 学    号:                  姓    名:                  指导老师: 实验时间:2013年6月 EDA---交通灯实验 1、实验目的 通过此实验让用户进一步了解、熟悉和掌握 CPLD/FPGA 开发软件的的使用方法及 Verilog HDL 的编程方法。学习简单状态机的设计和硬件测试。 2、实验器材 主要仪器设备 1、微机 1台 2、QuartusII集成开发软件 1套 3、EDA实验装置 1套 3、实验内容 本实验的内容是设计一个简易的交通灯控制器,要求能实现红、绿、黄灯三种信号的控制并通过数码管显示倒计时时间。整个设计在SmartSOPC 实验箱上实现,用第一、第二个数码管显示A方向的倒计时时间,用第七、第八个数码管显示B方向的倒计时时间。此外,由于缺少交通灯模块,本实验用第一、第二、第三个LED灯代表A方向的红、绿、黄灯三种信号,用第六、第七、第八个LED灯代表B方向的红、绿、黄等三种信号。 4、实验原理 本实验设计的交通灯控制器要求实现对 A、B 两个方向的红、绿、黄灯三种信号的控制,并能实现时间显示的倒计时。因此每个方向的信号可用一个状态机实现,状态的跳转顺序为红灯-绿灯-黄灯-红灯(另一个的状态应为绿-黄-红-绿),同时设计一个计时器,来记录每种灯的倒计时时间。最后将交通灯的状态信息输出至数码管和对应LED灯。注意,一个方向的红灯时间应和另一个方向的绿黄灯时间总和相等。 5、实验步骤 1) 启动Quartus II 建立一个空白工程,然后命名为traffic_test.qpf(器件为:EP3C55F484C8)。 2) 完成交通灯控制模块traffic_ctrl.v、交通灯显示模块traffic_display.v,加入顶层模块traffic_test.v,进行综合编译,若在编译过程中发现错 误,则找出并更正错误,直至编译成功为止。 3) 参考基础实验《LED驱动》及《动态数码管显示》的引脚绑定脚本文件setup.tcl,建立并执行新的引脚绑定脚本文件:setup.tcl。(rst_n为PIN_B11); 4) 对该工程文件进行全程编译处理,若在编译过程中发现错误,则找出并更正错误,直至编译成功为止。 5) 确保JP6上的LED0-LED7已通过跳线与FPGA引脚相连。 6) 按核芯板上的复位按键,观察交通灯是否正常运作。 5. 结构图 6、实验分析 1、分频模块 本实验采用了100HZ 的时钟做扫描频率,2.5HZ 的时钟做计数频率,故需要2 个时钟。 P1:process(clk)--分频 variable count1:std_logic_vector(7 downto 0); begin if clk'event and clk='1' then count1:=count1+1; if count1<20 then clkk<='0'; elsif count1<40 then clkk<='1'; else count1:="00000000"; clkk<='0'; end if; end if; end process P1 分频模块封装好 时序仿真结果如下: 2、计数模块 本实验共有3种模的计数,分别为模30、模5和模25,而且是减1计数。用一个变量来选择给数码管赋不同的初值,以实现不同的模值计数。 P2: process(m,cz)--赋不同初值 variable Z:std_logic_vector (7 downto 0); begin case m is when "00" => Z:="01100000";--60 when "01" => Z:="00100000";--20 when "10" => Z:="00000100";--4 WHEN OTHERS=> NULL; end case; if cz="11" or cz="10" or rst='0' then bcd<=Z;b<='1'; else b<='0';end if; end process P2; P22:process(clkk,en,rst)--减1计数 variable bcd2:std_logic_vector(7 downto 0):="01100000"; begin if rising_edge(clkk) then case b is when '1'=>bcd2:=bcd; WHEN OTHERS=> NULL; end case; if rst='1' then if en='1' then if bcd2>1 then if bcd2(3 downto 0)="0000" then --bcd2:=bcd2-7; bcd2(7 downto 4):=bcd2(7 downto 4)-"0001"; bcd2(3 downto 0):="1001"; else bcd2:=bcd2-1; end if; else if zt="00" then s60<='1';s20<='0';s4<='0'; elsif zt="10" then 8 s60<='0';s20<='1';s4<='0'; else s60<='0';s20<='0';s4<='1'; --else s60<='1';s20<='1';s4<='1'; end if; end if; end if; end if; end if; bbccdd<=bcd2; end process P22; 计数模块封装好 时序仿真图如下: 当30s 绿灯还没有计数完s=1,状态仍然维持不变(计数不变) 当0s 后s=1,状态改变(计数改变) 3、状态转换模块 由于交通灯的状态是在4 个状态中循环,故可以利用状态机来完成交通灯的状态转换, 状态机转化的条件如下: 模块程序如下 P3:process(states,clk,s60,s4,s20)--状态转移 begin if rising_edge(clk) then case states is when mgcr=> case a is when '1'=>cz<="00";a<='0'; when others=>null; end case; if s60='1' then if s='1' then states<=mycr;m<="10";zt<="01";cz<="11";a<='1'; else cz<="10"; end if; else cz<="00"; end if; when mycr=> case a is when '1'=>cz<="00";a<='0'; when others=>null; end case; if s4='1' then states<=mrcg;m<="01";zt<="10";cz<="11";a<='1'; else cz<="00"; end if; 11 when mrcg=> case a is when '1'=>cz<="00";a<='0'; when others=>null; end case; if (s='0' or (s20='1' and s='1')) then states<=mrcy;m<="10";zt<="11";cz<="11";a<='1'; else cz<="00"; end if; when mrcy=> case a is when '1'=>cz<="00";a<='0'; when others=>null; end case; if s4='1' then states<=mgcr;m<="00"; zt<="00";cz<="11";a<='1'; else cz<="00"; end if; end case; end if; end process P3; 时序仿真图如下: 4、显示模块 完成要显示的数由BCD 码转化为相应的数码管七段码,由于数码管采用动态扫描的显示方式,还需要产生位选信号。程序如下: P4:process (clk)--数码管显示 variable sseell:std_logic_vector(2 downto 0); begin if clk'event and clk='1' then if sseell<"001" then sseell:=sseell+1; else sseell:="000"; end if; end if; sel<=sseell; case sseell is when "000"=>xianshi<= bbccdd ( 7 downto 4); when "001"=>xianshi<= bbccdd ( 3 downto 0 ); when others=>null; end case; CASE xianshi IS WHEN "0000"=>qiduan<="00111111"; WHEN "0001"=>qiduan<="00000110"; WHEN "0010"=>qiduan<="01011011"; WHEN "0011"=>qiduan<="01001111"; WHEN "0100"=>qiduan<="01100110"; WHEN "0101"=>qiduan<="01101101"; WHEN "0110"=>qiduan<="01111101"; WHEN "0111"=>qiduan<="00000111"; WHEN "1000"=>qiduan<="01111111"; WHEN "1001"=>qiduan<="01101111";
本文档为【中南大学EDA实验报告】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_713593
暂无简介~
格式:doc
大小:35KB
软件:Word
页数:0
分类:互联网
上传时间:2019-02-06
浏览量:30