文章目录

  • 一、实验目的
  • 二、实验内容
  • 三、实验设计与结果
  • 四、实验思考与小结

一、实验目的

掌握有限状态机的编程和使用方法。

二、实验内容

设计一个十字路口交通灯控制器,东西(b)、南北(a)方向有红灯、黄灯、绿灯,持续时间分别为45、5、40秒,仿真验证其功能。

三、实验设计与结果

1.整体设计思路:根据题目要求可知,需要用VHDL描述设计不同的进程分别进行“复位清零”、“状态定义及转化”、“时间定义及控制”、“计时”的功能。而又因为红绿灯需要持续40秒,而黄灯只需要持续5秒,因此需要将“时间的定义及控制”、“计时”的功能各自都分开成两个部分。细节:需要注意复位清零的异步性、双向红绿灯存在的4种不同状态、计时功能与状态选择的衔接等。VHDL描述代码如下。
①引入与定义:

LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE ieee.std_logic_unsigned.ALL;ENTITY rgy3 isport( clk,rst: in std_logic;Ra,Rb,Ga,Gb,Ya,Yb: out std_logic);
END rgy3;Architecture bhv of rgy3 istype state is (S0,S1,S2,S3);signal presentstate,nextstate : state;signal time40,time5 : std_logic;signal rst40,rst5 : std_logic ;signal en40,en5 : std_logic ; signal tmp40 : std_logic_vector(5 downto 0);signal tmp5 : std_logic_vector(2 downto 0);begin

②异步复位清零:

 process(clk,rst)beginif rst = '1' then presentstate <= S0;elsif clk'event and clk='1' thenpresentstate<=nextstate;end if;end process;

③40秒计时:

process(clk,rst40,en40) begin if rst = '1' then tmp40<="000000";elsif rst40='1' then tmp40<="000000";elsif clk'event and clk='1' then if en40='1' thenif tmp40="100111" then tmp40<="000000";else tmp40<=tmp40+1;end if;end if;end if;if tmp40="100111" then time40<='1';else time40<='0';end if;end process;

④5秒计时:

 process(clk,rst5,en5) begin if rst = '1' then tmp5<="000";elsif rst5='1' then tmp5<="000";elsif clk 'event and clk='1' then if en5='1' thenif tmp5="100" then tmp5<="000";else tmp5<=tmp5+1;end if;end if;end if;if tmp5="100" then time5<='1';else time5<='0';end if;end process;

⑤时间与状态衔接:

process(presentstate,time40,time5)begincase presentstate iswhen S0 => rst40 <='0';en40<='1';rst5<='1';en5<='0';if time40= '1' then nextstate<= S1;else nextstate<= S0; end if;when S1 => rst5 <='0';en5 <='1';rst40<='1';en40<='0';if time5= '1' then nextstate<= S2;else nextstate<= S1; end if;  when S2 => rst40 <='0';en40<='1';rst5<='1';en5<='0';if time40= '1' then nextstate<= S3;else nextstate<= S2; end if;                              when S3 => rst5 <='0';en5<='1';rst40<='1';en40<='0';if time5= '1' then nextstate<= S0;else nextstate<= S3; end if;                    end case;end process;

⑥状态对应转化:

process(presentstate)begincase presentstate is when S0   =>   Ra<='0'; Ya<= '0'; Ga<='1'; Rb<='1'; Yb<= '0'; Gb<='0';    when S1     =>   Ra<='0'; Ya<= '1'; Ga<='0'; Rb<='1'; Yb<= '0'; Gb<='0';    when S2     =>   Ra<='1'; Ya<= '0'; Ga<='0'; Rb<='0'; Yb<= '0'; Gb<='1';    when S3 =>   Ra<='1'; Ya<= '0'; Ga<='0'; Rb<='0'; Yb<= '1'; Gb<='0';end case;end process;

2.仿真实验:输入:clk、rst,输出:Ra、Rb、Ga、Gb、Ya、Yb以及状态中间输出:presentstate、tmp40、tmp5。

3.状态机转换图。

4.根据引脚配置完成接线,下载至FPGA芯片中,在实验箱上完成验证。如下图为相关的实验验证。

四、实验思考与小结

1.VHDL描述的模块化,将实现不同功能的VHDL描述分开在不同的进程里面,实现VHDL的“高内聚低耦合”。
2. 需要明确不同的状态机它们之间的转换条件。
3. 状态机由状态寄存器和组合逻辑电路构成,能够根据控制信号按照预先设定的状态进行状态转移,是协调相关信号动作、完成特定操作的控制中心。交通信号灯可以用状态机的原理来实现,因为信号灯的变化状态是有限的,各个状态可以列举出来,状态间切换由计数器决定。

FPGA(7)--有限状态机--交通灯相关推荐

  1. FPGA双模式交通灯的设计

    一.设计要求 1.模块一:模拟十字路口主干道与辅道灯光变化情况: a.FPGA板上电后,控制显示的开关拨至高电平,进行五秒的倒计时,然后出现第一次红绿灯转换: b.接下来会根据所处不同的状态有不同的倒 ...

  2. step fpga上实现呼吸灯和交通灯

    呼吸灯 呼吸灯:我们将通过脉宽调制技术来实现"呼吸灯",实现LED的亮度由最暗逐渐增加到最亮,再逐渐变暗的过程. 脉冲宽度调制.它是利用微控制器的数字输出调制实现,是对模拟电路进行 ...

  3. CASE_01 基于FPGA的交通灯控制器

        该系类博客序言和资源简介可浏览该博客:PREFACE FPGA经典案例序言 快速了解该系列博客的内容与可用 资源. 目录 1 案例引导 1.1 硬件设计初窥 1.2 逻辑设计初窥 2 模块级逻 ...

  4. FPGA学习心得分享——交通灯(EGO1)

    学期快结束了,学了一个学期FPGA课程,通过自己思索加上老师的指导我完成了自己第一份交通灯的作业,我希望把经验分享给学习Verilog遇到困难的同学,更希望大家都能顺利完成自己的作业. 灯能左右改变方 ...

  5. 基于FPGA的交通灯

    交通灯是单片机和FPGA都会做的简单项目.本次交通灯做得比较简单,只是模仿一个十字路口的交通灯. 总共有三个模块组成,RTL视图如下: 顶层模块,控制模块,数码管显示模块.代码如下: 顶层模块: mo ...

  6. FPGA开发基础——基于multisim以及Quartus实现的交通灯电路

    作者:王子齐 学校:电子科技大学 学号:2018151202014 设计目的:完成对于FGPA开发的基础练习,建立FPGA开发思想. 目录 设计要求 基于multisim对于交通灯的电路搭建 1.1 ...

  7. 基于FPGA的交通灯系统

    基于FPGA的交通灯系统 一.实验目的 1.学习和掌握将实践中的要求抽象为逻辑需求关系的方法. 2.掌握将小型数字系统划分为控制器和处理器的方法. 3.掌握依据ASM图设计小型数字系统的方法 4.掌握 ...

  8. 基于fpga的交通灯的设计

    课题一:交通灯控制设计 1.课程设计的目的与要求 1.1目的 以FPGA为核心,设计一个交通灯控制器,每个路口都有红.黄.绿三盏灯.该交通信号灯控制器由一条车道A和一条车道B汇合成十字路口,在每个入口 ...

  9. FPGA智能交通灯控制器系统系统设计

    1系统总体设计 把由5OM的有源晶振产生的现场可编程逻辑器件FPGA 的系统时钟输入到分频模块,经分频模块分频产生频率为1Hz的时钟脉冲,作为控制定时模块.控制模块.紧急模块.计数模块的时钟信号,然后 ...

最新文章

  1. iOS7以下设备获取mac地址
  2. C++文件流:myfstream,fstream,文件读写,随机文件读写【C++文件流】(59)
  3. 自定义sort函数第三个参数的规则
  4. SAP UI5 setModel of scFld Controller
  5. spring 调用python_Spring http服务远程调用实现过程解析
  6. 012.Adding a New Field --【添加一个新字段】
  7. ciclop读音,购机必备,15种 3D扫描 设备 优缺点汇总
  8. 如何理解指向指针的指针?
  9. 【HAVENT原创】让 axios 支持 jsonp
  10. python模拟登陆GDUFE教学一体化平台
  11. 微信小程序实现页面按钮分享,右上角三个点分享禁用分享
  12. java原始人赛车,原始人赛车
  13. 网站上传服务器浏览器打不开,网站发布或自己上传程序后,网站打不开的原因有哪些?...
  14. 云台山风景美如画,四大网红打卡景点等你来!
  15. 如何被猎头猎杀:猎头慕名而来的绝招
  16. 数学计算机游戏攻略,孩子们的游戏学习基本的数学
  17. java组件叠加显示,如何让上层的组件一直在上层显示
  18. 数据可视化之汽车销量,截止到2022年目前中国汽车保有量是3.02亿辆
  19. android 局部tab页,安卓TabLayout+ViewPager实现切页
  20. 作为Gatekeeper,请守好交付质量关口(Quality Gate)

热门文章

  1. 用于Spring应用程序的Gradle原型
  2. 使用Java和Scala将Play Framework 2应用程序部署到Openshift
  3. zsh 主题的下载和安装
  4. 前端 JS 如何在一个页面中局部加载其它页面的数据
  5. QPW 用户签署协议日志表(tf_user_agreement_log)
  6. MySQL JDBC URL各参数详解
  7. 使用IDEA的Spring Initializr创建SpringBoot工程
  8. axure元件库 文件上传_手把手教你打造一套属于产品经理自己的元件库
  9. shell开启飞行模式_今天才知道,原来手机的飞行模式用处那么多,看完涨知识了...
  10. 正则表达式实战---爬取多张图片