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

灯能左右改变方向,作品能够模拟红、黄、绿、左右转弯灯等形式,按键可以操控灯的状态。并且,作品具备三个交通方式。例如双闪缓行,应急通道。

做交通灯需要状态机的知识

根据状态机的输出信号是否与电路的输入有关分为 Mealy型状态机和 Moore 型状态机。

Mealy型状态机:电路的输出信号不仅与电路的当前的状态有关,还与电路的输入有关。

Moore型状态机:电路的输入仅与各触发器的状态有关,与电路的输入无关。

一段式状态机、二段式状态机、三段式状态机各自的特点

一段式状态机: 仅适合非常简单的状态机设计,只涉及时序电路,消耗的逻辑比较少。

二段式状态机:在组合逻辑特别复杂时适用,但要注意需在后面加一个触发器以消除组合逻辑对输出产生的毛刺。三段式没有这个问题,由于第三个always会生成触发器。

三段式状态机:描述方法虽然代码结构复杂了一些,但是换来的优势是:使FSM做到了同步寄存器输出,消除了组合逻辑输出的不稳定与毛刺的隐患,而且更利于时序路径分组,一般来说在FPGA/CPLD等可编程逻辑器件上的综合与布局布线效果更佳。

主程序如下

管脚约束如下:

create_clock -period 10 [get_ports clk_100m]
set_property IOSTANDARD LVCMOS33 [get_ports {clk_100m}]
set_property PACKAGE_PIN P17 [get_ports {clk_100m}]

set_property IOSTANDARD LVCMOS33 [get_ports {rst_n}]
set_property PACKAGE_PIN P15 [get_ports {rst_n}]

######################################################

set_property IOSTANDARD LVCMOS33 [get_ports {sw[0]}]
set_property PACKAGE_PIN R1 [get_ports {sw[0]}]

set_property IOSTANDARD LVCMOS33 [get_ports {sw[1]}]
set_property PACKAGE_PIN N4 [get_ports {sw[1]}]

set_property IOSTANDARD LVCMOS33 [get_ports {sw[2]}]
set_property PACKAGE_PIN M4 [get_ports {sw[2]}]

set_property IOSTANDARD LVCMOS33 [get_ports {sw[3]}]
set_property PACKAGE_PIN R2 [get_ports {sw[3]}]

set_property IOSTANDARD LVCMOS33 [get_ports {sw[4]}]
set_property PACKAGE_PIN P2 [get_ports {sw[4]}]

set_property IOSTANDARD LVCMOS33 [get_ports {led[0]}]
set_property PACKAGE_PIN K2 [get_ports {led[0]}]

set_property IOSTANDARD LVCMOS33 [get_ports {led[1]}]
set_property PACKAGE_PIN J2 [get_ports {led[1]}]

set_property IOSTANDARD LVCMOS33 [get_ports {led[2]}]
set_property PACKAGE_PIN J3 [get_ports {led[2]}]

set_property IOSTANDARD LVCMOS33 [get_ports {led[3]}]
set_property PACKAGE_PIN H4 [get_ports {led[3]}]

set_property IOSTANDARD LVCMOS33 [get_ports {led[4]}]
set_property PACKAGE_PIN J4 [get_ports {led[4]}]

set_property IOSTANDARD LVCMOS33 [get_ports {led[5]}]
set_property PACKAGE_PIN G3 [get_ports {led[5]}]

set_property IOSTANDARD LVCMOS33 [get_ports {led[6]}]
set_property PACKAGE_PIN G4 [get_ports {led[6]}]

set_property IOSTANDARD LVCMOS33 [get_ports {led[7]}]
set_property PACKAGE_PIN F6 [get_ports {led[7]}]

set_property IOSTANDARD LVCMOS33 [get_ports {seg[0]}]
set_property PACKAGE_PIN D4 [get_ports {seg[0]}]

set_property IOSTANDARD LVCMOS33 [get_ports {seg[1]}]
set_property PACKAGE_PIN E3 [get_ports {seg[1]}]

set_property IOSTANDARD LVCMOS33 [get_ports {seg[2]}]
set_property PACKAGE_PIN D3 [get_ports {seg[2]}]

set_property IOSTANDARD LVCMOS33 [get_ports {seg[3]}]
set_property PACKAGE_PIN F4 [get_ports {seg[3]}]

set_property IOSTANDARD LVCMOS33 [get_ports {seg[4]}]
set_property PACKAGE_PIN F3 [get_ports {seg[4]}]

set_property IOSTANDARD LVCMOS33 [get_ports {seg[5]}]
set_property PACKAGE_PIN E2 [get_ports {seg[5]}]

set_property IOSTANDARD LVCMOS33 [get_ports {seg[6]}]
set_property PACKAGE_PIN D2 [get_ports {seg[6]}]

set_property IOSTANDARD LVCMOS33 [get_ports {seg[7]}]
set_property PACKAGE_PIN H2 [get_ports {seg[7]}]

set_property IOSTANDARD LVCMOS33 [get_ports {an[0]}]
set_property PACKAGE_PIN G6 [get_ports {an[0]}]

set_property IOSTANDARD LVCMOS33 [get_ports {an[1]}]
set_property PACKAGE_PIN E1 [get_ports {an[1]}]

set_property IOSTANDARD LVCMOS33 [get_ports {an[2]}]
set_property PACKAGE_PIN F1 [get_ports {an[2]}]

set_property IOSTANDARD LVCMOS33 [get_ports {an[3]}]
set_property PACKAGE_PIN G1 [get_ports {an[3]}]

FPGA学习心得分享——交通灯(EGO1)相关推荐

  1. 【12月原创】RT-thread - 柿饼UI学习心得分享

    柿饼UI学习心得分享(2) 概述 介绍: Persimmon 是一套运行在RT-Thread嵌入式实时操作系统上的图形用户组件界面,用于提供图形界面的用户交互. 它采用C++语言编写,基于C语言实现的 ...

  2. html文件的启示标记,某html学习心得分享.ppt

    某html学习心得分享 XHTML学习心得分享 了解XHTML 关键词: HTML XML XHTML 问题 优势 关系 HTML的特点 结构简单 HTML结构 文件类型标记开始 文件头开始 页面标题 ...

  3. 动态规划学习心得分享

    最近在代码随想录(代码随想录)刷了一些有关动态规划的算法题,收获还蛮大的,下面是我的一些学习心得分享,不足之处敬请批评指正~ 首先来简单介绍一下什么是动态规划以及动规与贪心有何区别? 动态规划(Dyn ...

  4. 强化学习在智能交通灯中的应用

    IntelliLight: a Reinforcement Learning Approach for Intelligent Traffic Light Control introduction 这 ...

  5. AI绘图学习心得分享-Midjourney绘画AI,让你少走一些弯路

    本教程收集于:AIGC从入门到精通教程 AI绘图学习心得分享-Midjourney绘画AI,让你少走一些弯路 本篇没有什么长篇大论,全部都是实用心得总结.接下来,我们将分享关于Midjourney绘画 ...

  6. 工程师的基本功是什么?如何练习?—学习心得分享

    开头聊几句 1.周末休息,今天下雨了,气温还行,不冷不热 2.刚看完<这!就是街舞>,很燃很炸,一些作品表达的东西也很让人感动 3.发现真正热爱的事情,并为之付出所有的能量,很让人羡慕 开 ...

  7. apicloud菜鸟教程_干货教程 | APICloud新手学习心得分享

    最近很多爱学习的开发者,在后台给柚子君留言询问:如何在APICloud平台创建app?如何添加模块?自定义loader编译好之后在studio里面怎么同步等问题. 柚子君就借此机会给大家分享一个对 j ...

  8. ui设计学习心得分享【萧蕊冰】

    大家好,今天这篇文章来分享一下UI设计学习心得.主要是怎么从之前的行业跨行进入UI设计领域,还有一些报名培训的经验,以及自己的UI设计学习心得,写的不好,请多多包涵. 以前也是因为听朋友说UI设计待遇 ...

  9. SEO学习心得:分享总结学习SEO的心得

    在互联网行业中学习SEO优化的人有很多,学习SEO途径也有很多种,大多数都是以自学为主,通过在网上报名SEO培训,还有的自己看SEO书籍,但是学习的基本都是入门阶级,很少有跟深层次的学习,学习的内容千 ...

最新文章

  1. 特约专栏丨王耀南院士:人工智能赋能无人系统
  2. SQL SERVER全面优化-------索引有多重要?
  3. 上下文管理、线程池、redis订阅和发布
  4. python函数“转移”
  5. 计算机学院迎新晚会集宁,迎新晚会 | 信息管理学院2017年“海姆达尔之眼”迎新晚会圆满成功...
  6. 正式举报林-裴 (1999) 论文涉嫌学术不端
  7. phpexcel 获取工作簿名称_工作分享 | Excel快速汇总考勤
  8. table中的td内容过长显示为固定长度,多余部分用省略号代替
  9. GX works2 中的块的创建与使用方法
  10. Java 进阶基础知识
  11. linux和window是服务器时间同步
  12. Java基础资料整理
  13. windows内核驱动开发(WDK环境搭建)
  14. npm无法加载文件,无法下载依赖包
  15. 引导路径动画 (1)
  16. Java 的反射机制
  17. javascript 静态变量与实例变量
  18. cmd命令打开及切换目录路径
  19. 腾讯云python怎么用_Python操作腾讯云CVM
  20. CISSP认证的知识域,一起来看!

热门文章

  1. consul 服务健康检查
  2. 如何看待简书大V饱醉豚 写的《为什么程序员是出轨率最高的群体》?
  3. iOS 系统分享UIActivityViewController,自定义分享预览UI
  4. Golang实现并发版网络爬虫:斗鱼直播颜值区直播封面图片爬取并保存文件
  5. 计划FM为人人网提供首个开源Ruby SDK
  6. verilog中initial、always模块的使用方法
  7. vSphere高级功能(一)——VMotion及SVMotion的实现
  8. 设置IE浏览器文本模式为IE8或IE7
  9. 快递查询(快递单号智能识别/快递公司+快递单号)-完整提供 Demo 代码示例及数据专业且全面的 API 查询接口
  10. idea集成Git后VCS菜单栏被替换为Git解决方案