【重拾FPGA】读锆石科技硬件语法篇有感
最近一直在学习FPGA编程的思想,如何才能让自己摆脱C语言,做到眼中代码,心中电路,这是我最近一直在思考的问题。读了一下锆石科技的FPGA硬件语法篇后,我发现了很多自己平时写Verilog时没有注意到的地方,带有C语言影子的地方,在这里总结一下,希望自己在日后写Verilog时不要再犯了
摆脱C语言!!!
1.三段式状态机
图来自锆石科技。
可见,对于状态机的状态编码,我们应该使用格雷码,还记得数电课老师说格雷码一次只改变一位,一直不知道有什么用,现在真的是恍然大悟!这样可以避免毛刺,避免因为两位变化不同步而进入错误状态!
然后对于三段式状态机
第一段:时序逻辑,使当前状态变为下一状态
第二段:组合逻辑,根据条件改变下一状态
第三段:组合逻辑,根据状态条件写输出
然后使用一个D触发器来寄存输出值,这一点下文会讲
2.使用D触发器来寄存值,使时序逻辑和组合逻辑分开
在Verilog中,时序电路用非阻塞赋值 <= ,组合逻辑使用阻塞赋值 = ,当电路较大时,容易分不清楚导致时序混乱,使用D触发器来将其分开,是一种不错的办法,如下图:
led_reg_n是组合逻辑中改变的,我们在组合逻辑中对其进行改变值得操作,然后在时序逻辑中,将其通过D触发器赋值给led_reg,便实现了分离。
又如同这个计数器得写法:
这样的有点引用锆石科技的话:
所以,请记住改变值用组合逻辑!然后再通过D触发器时序逻辑传出去!
【重拾FPGA】读锆石科技硬件语法篇有感相关推荐
- CSS魔法堂:重拾Border之——图片作边框
前言 当CSS3推出border-radius属性时我们是那么欣喜若狂啊,一想到终于不用再添加额外元素来模拟圆角了,但发现border-radius还分水平半径和垂直半径,然后又发现border-t ...
- (87)FPGA读文件激励(readmemb)
(87)FPGA读文件激励(readmemb) 1.1 目录 1)目录 2)FPGA简介 3)Verilog HDL简介 4)FPGA读文件激励(readmemb) 5)结语 1.2 FPGA简介 F ...
- (86)FPGA读文件激励(readmemh)
(86)FPGA读文件激励(readmemh) 1.1 目录 1)目录 2)FPGA简介 3)Verilog HDL简介 4)FPGA读文件激励(readmemh) 5)结语 1.2 FPGA简介 F ...
- 重拾Java Network Programming(一)IO流
前言 最近在重拾Java网络编程,想要了解一些JAVA语言基本的实现,这里记录一下学习的过程. 阅读之前,你需要知道 网络节点(node):位于网络上的互相连通的设备,通常为计算机,也可以是打印机,网 ...
- FPGA笔记之verilog语言(基础语法篇)
文章目录 FPGA笔记之verilog语言(基础语法篇) 1. verilog 的基础结构 1.1 verilog设计的基本单元--module 1.2 module的使用 1.3 I/O的说明 1. ...
- 让你重拾信心的单片机入门,小哥带你了解
\\\插播一条: 自己在今年整理一套单片机单片机相关论文800余篇 论文制作思维导图 原理图+源代码+开题报告+正文+外文资料 想要的同学私信找我. 电子编程入门到工程师--重拾信心-单片机一篇入门 ...
- Mysql如何实现隔离级别 - 可重复读和读提交 源码分析
Abstract 本文会(1) 演示Mysql的两种隔离级别. (2) 跟着mysql的源代码来看看它是怎么实现这两种隔离级别的. Mysql的隔离级别 当有多个事务并发执行时, 我们需要考虑他们之 ...
- HMS Core Insights第二期直播预告——华为定位技术让你重拾方向感
[导读] 从古至今,人们从未停止对精确定位的追求.古人夜观星象定位,发明思南指引方向,用六分仪在大海上乘风破浪.而随着科技的发展,现代的人们已经可以通过手机享受便捷准确的定位服务.无论是出行导航,网购 ...
- 重拾HelloWorld
文章目录 重拾HelloWorld 认知JavaCore 认知自我 重拾HelloWorld 重拾HelloWolrd,从HelloWorld世界感知一下目前的知识体系吧! 认知JavaCore 多维 ...
- FPGA学习之嵌入式硬件系统(SOPC)概述(软硬件设计)
FPGA学习之嵌入式硬件系统(SOPC)概述(软硬件设计) 首先我们知道FPGA可以实现充当完整微处理器的逻辑,并且提供许多灵活性选项.下图体现出FPGA器件为何是现场可编辑门阵列器件. 为了使基于F ...
最新文章
- Scrum敏捷研发管理平台-Leangoo看板
- eclipse-python插件。如果online update的话,经常会失败,所以offline比较靠谱
- 数据类型的sizeof
- 使用Java8新特性(stream流、Lambda表达式)实现多个List 的笛卡尔乘积 返回需要的List<JavaBean>
- SAP C4C OData服务的filter,客户端分页和排序的使用方式
- Lync与Exchange 2013 UM集成:Lync Server配置
- java难学还是pythonnanxue_关于python:为什么numpy中的“ NaN”比“ -np.inf”更小?
- 手机电池的更换标准/指标 最近小米手机换电池那些事
- 3.1Python数据处理篇之Numpy系列(一)---ndarray对象的属性与numpy的数据类型
- 鸟哥Linux服务器-8
- 数据库系统工程师输给了计算机等级考试二级
- matlab拟合函数导出,excel里曲线拟合的公式怎么导出?()
- 期货连续合约跳空处理
- 时序数据库TSDB逐日统计的Jave算法实现过程
- 是怎么回事?沉浸式体验反倒是局限虚拟现实
- python youtube api_使用youtube v3 API从youtube播放列表检索所有视频
- 用C语言将中文文本和英文文本合并为一段中文一段英文(翻译排版)
- 树莓派GPIO 基础(二)
- HP-UNIX 磁带备份-----make_tape_recovery命令详解
- python相关库快速下载