FPGA学习心得分享——交通灯(EGO1)
学期快结束了,学了一个学期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)相关推荐
- 【12月原创】RT-thread - 柿饼UI学习心得分享
柿饼UI学习心得分享(2) 概述 介绍: Persimmon 是一套运行在RT-Thread嵌入式实时操作系统上的图形用户组件界面,用于提供图形界面的用户交互. 它采用C++语言编写,基于C语言实现的 ...
- html文件的启示标记,某html学习心得分享.ppt
某html学习心得分享 XHTML学习心得分享 了解XHTML 关键词: HTML XML XHTML 问题 优势 关系 HTML的特点 结构简单 HTML结构 文件类型标记开始 文件头开始 页面标题 ...
- 动态规划学习心得分享
最近在代码随想录(代码随想录)刷了一些有关动态规划的算法题,收获还蛮大的,下面是我的一些学习心得分享,不足之处敬请批评指正~ 首先来简单介绍一下什么是动态规划以及动规与贪心有何区别? 动态规划(Dyn ...
- 强化学习在智能交通灯中的应用
IntelliLight: a Reinforcement Learning Approach for Intelligent Traffic Light Control introduction 这 ...
- AI绘图学习心得分享-Midjourney绘画AI,让你少走一些弯路
本教程收集于:AIGC从入门到精通教程 AI绘图学习心得分享-Midjourney绘画AI,让你少走一些弯路 本篇没有什么长篇大论,全部都是实用心得总结.接下来,我们将分享关于Midjourney绘画 ...
- 工程师的基本功是什么?如何练习?—学习心得分享
开头聊几句 1.周末休息,今天下雨了,气温还行,不冷不热 2.刚看完<这!就是街舞>,很燃很炸,一些作品表达的东西也很让人感动 3.发现真正热爱的事情,并为之付出所有的能量,很让人羡慕 开 ...
- apicloud菜鸟教程_干货教程 | APICloud新手学习心得分享
最近很多爱学习的开发者,在后台给柚子君留言询问:如何在APICloud平台创建app?如何添加模块?自定义loader编译好之后在studio里面怎么同步等问题. 柚子君就借此机会给大家分享一个对 j ...
- ui设计学习心得分享【萧蕊冰】
大家好,今天这篇文章来分享一下UI设计学习心得.主要是怎么从之前的行业跨行进入UI设计领域,还有一些报名培训的经验,以及自己的UI设计学习心得,写的不好,请多多包涵. 以前也是因为听朋友说UI设计待遇 ...
- SEO学习心得:分享总结学习SEO的心得
在互联网行业中学习SEO优化的人有很多,学习SEO途径也有很多种,大多数都是以自学为主,通过在网上报名SEO培训,还有的自己看SEO书籍,但是学习的基本都是入门阶级,很少有跟深层次的学习,学习的内容千 ...
最新文章
- 特约专栏丨王耀南院士:人工智能赋能无人系统
- SQL SERVER全面优化-------索引有多重要?
- 上下文管理、线程池、redis订阅和发布
- python函数“转移”
- 计算机学院迎新晚会集宁,迎新晚会 | 信息管理学院2017年“海姆达尔之眼”迎新晚会圆满成功...
- 正式举报林-裴 (1999) 论文涉嫌学术不端
- phpexcel 获取工作簿名称_工作分享 | Excel快速汇总考勤
- table中的td内容过长显示为固定长度,多余部分用省略号代替
- GX works2 中的块的创建与使用方法
- Java 进阶基础知识
- linux和window是服务器时间同步
- Java基础资料整理
- windows内核驱动开发(WDK环境搭建)
- npm无法加载文件,无法下载依赖包
- 引导路径动画 (1)
- Java 的反射机制
- javascript 静态变量与实例变量
- cmd命令打开及切换目录路径
- 腾讯云python怎么用_Python操作腾讯云CVM
- CISSP认证的知识域,一起来看!
热门文章
- consul 服务健康检查
- 如何看待简书大V饱醉豚 写的《为什么程序员是出轨率最高的群体》?
- iOS 系统分享UIActivityViewController,自定义分享预览UI
- Golang实现并发版网络爬虫:斗鱼直播颜值区直播封面图片爬取并保存文件
- 计划FM为人人网提供首个开源Ruby SDK
- verilog中initial、always模块的使用方法
- vSphere高级功能(一)——VMotion及SVMotion的实现
- 设置IE浏览器文本模式为IE8或IE7
- 快递查询(快递单号智能识别/快递公司+快递单号)-完整提供 Demo 代码示例及数据专业且全面的 API 查询接口
- idea集成Git后VCS菜单栏被替换为Git解决方案