硬件逻辑开发
文章平均质量分 91
永恒的止水
这个作者很懒,什么都没留下…
展开
-
Verilog中$timeformat的用法
Verilog中$timeformat的用法更新历史20200807:首次发布语法$timeformat的语法如下:$timeformat(units_number, precision_number, suffix_string, minimum_field_wdith);其中:units_number 是 0 到-15 之间的整数值,表示打印的时间值的单位:0 表示秒,-3 表示毫秒,-6 表示微秒,-9 表示纳秒, -12 表示皮秒, -15 表示飞秒;中间值也可以使用:例原创 2020-08-07 21:15:01 · 24735 阅读 · 0 评论 -
整理:Vivado综合属性的相关资料
整理:Vivado综合属性的相关资料更新历史20200614:首次发布Vivado综合工具支持直接在RTL文件或XDC文件中设置综合属性。综合属性是个很实用的东西,比如:综合工具将改善时序用的寄存器优化掉了,怎么阻止这一优化呢?——在RTL代码中对该寄存器加入DONT_TOUCH综合属性。某个寄存器的扇出数量太多了,导致时序不满足,那么该怎样指导综合工具对该寄存器进行复制,从而使得这些相同功能的寄存器均分扇出数呢?——在RTL代码中对该寄存器设置MAX_FANOUT综合属性。那么,原创 2020-06-14 17:06:41 · 743 阅读 · 0 评论 -
工具:为Verilog状态机自动生成状态定义代码
工具:为Verilog状态机自动生成状态定义代码更新历史20200411:首次发布作为一名电子学工程师,FPGA的逻辑开发是少不了的。用Verilog开发FPGA逻辑时,我发现:状态机中的状态数量很多时,状态定义代码写起来费时费力,且很容易出错插入、删除状态后,状态定义代码容易变得杂乱例如,以下代码中,STATE2 的编码不小心写错了,但这个错误并不容易被一眼看出来 (尤...原创 2020-04-11 14:06:59 · 2276 阅读 · 0 评论 -
论述:Verilog中的奇偶校验
经验:Verilog中的奇偶校验更新历史20200122:首次发布在用Verilog写UART通信的逻辑代码时,遇到了"对数据做奇偶校验"的需求,网上一搜就得到了解决办法。感谢万能的网友之余,我还是想把Verilog中的奇偶校验的原理用更加形象的方式描述一遍,故发此文。首先,Verilog中对数据做奇偶校验的模块代码如下:module generate_parity_bit#...原创 2020-01-23 14:33:35 · 16487 阅读 · 3 评论 -
经验:如何快速地写出格雷码
经验:快速写出格雷码的技巧更新历史201901212:首次发布格雷码(Binary Gray Code)的特点是:相邻两个码之间,只相差了一个比特由于这个特性,格雷码在数字电路中使用甚广。不过,令人尴尬的是,格雷码似乎不好记。以4比特的格雷码为例:十进制数格雷码00000100012001130010401105...原创 2019-12-12 21:17:02 · 9946 阅读 · 5 评论 -
经验:如何降低FPGA逻辑交接的难度
论述:如何降低FPGA逻辑交接的难度更新历史201901026:首次发布作为一名电子学工程师,本人在逻辑开发的经历中,经常看到以下这种情况的发生:甲把FPGA逻辑交接给乙后,乙要花很长的时间去熟悉逻辑代码,才能小心翼翼地尝试为新的需求做出相应的更改。比较有趣的是,上述情况发生时,往往同时存在如下的因素:甲的FPGA逻辑风格混乱、缺少注释甲没有为FPGA逻辑编写方案或者...原创 2019-10-26 20:33:43 · 304 阅读 · 0 评论 -
论述:FPGA中并行计算的常规方法
论述:FPGA中并行计算的常规方法用过FPGA的人应该都知道,在FPGA中,逻辑是并行地运行的,各个状态机同时都在工作,状态机之间可能会有信号交互,也可能毫无关系、各管各的工作。这就给了我们一个灵感:如果我们有一个复杂的计算要做,那么,我们是否可以将计算过程拆成几个子计算过程,并利用FPGA的并行特性,让各个子计算过程同时进行以提高计算速度呢?基于这个灵感,就让我们看看,FPGA中并行计算的...原创 2019-04-11 13:10:19 · 10522 阅读 · 1 评论 -
论述:定点小数的截断与扩充
论述:定点小数的截断与扩充更新历史20190329:首次发布使用定点小数,可以将小数的存储和运算,转化为整数的存储和运算。定点小数的运算,需要小心地处理位宽问题。除此以外,在硬件计算中,还经常会遇到需要对定点小数进行截断与扩充的情况。接下来,本文将以十进制下非负定点小数为例,让读者明白为什么要对定点小数进行截断与扩充,然后讲解二进制下无符号和有符号定点小数的截断与扩充。假定在十...原创 2019-04-05 21:01:45 · 2146 阅读 · 0 评论 -
论述:二进制数据的原码、反码和补码
论述:二进制数据的原码、反码和补码更新历史20190324:首次发布网上有很多关于二进制数据的原码、反码和补码的讲解文章,其中,博主最欣赏的是:(白乾涛) 原码 反码 补码 概念 原理 详解在此基础上,博主再说几句:问:十进制下就没有原码、反码和补码吗?对于“二进制数据的原码、反码和补码”,大家常常简称“原码、反码和补码”,不会造成误解吗?答:十进制下没有原码、反码和补码。...原创 2019-03-24 09:58:13 · 751 阅读 · 0 评论 -
论述:定点小数
论述:在FPGA中用整数表示小数更新历史20190323:首次发布现在有一组小数:在FPGA中,数据是按整数的方式进行存储和运算的。如果要在FPGA中进行小数的存储和运算,首先就需要解决FPGA中小数的表示方法问题。下面,我们就来谈谈:在FPGA中,如何用一个整数来表示一个小数。为了用一句话将本论述归纳总结一下,那就是:xxx...原创 2019-03-23 22:14:40 · 3028 阅读 · 0 评论 -
论述:数值计算中的精度问题
论述:数值计算中的精度问题更新历史20190323:首次发布(1−10÷9)(1-10\div9)(1−10÷9)等于多少?这个问题看上去很简单,我们可以很容易地得到:1−10÷9=1−1.11˙=−0.11˙1-10\div9 = 1-1.1\dot1 = -0.1\dot11−10÷9=1−1.11˙=−0.11˙可以看到,理论上的结果是一个无限循环的小数。如果...原创 2019-03-23 12:14:33 · 2860 阅读 · 0 评论 -
教程:在Vivado中指定VSCode作为文本编辑器
教程:在Vivado中指定VSCode作为文本编辑器本教程面向的是硬件逻辑开发者。Vivado是Xilinx公司提供的逻辑开发平台(之一)。如果不喜欢Vivado自带的文本编辑器,可以选择第三方的文本编辑器,例如VSCode。在Vivado中指定VSCode作为文本编辑器的方法如下:第一步:打开Vivado的设置第二步:选择"Custom Editor"后点击右边那个三个点的按钮第三...原创 2019-03-25 21:29:56 · 15780 阅读 · 21 评论 -
论述:定点小数的运算
论述:定点小数的运算更新历史20190324:首次发布目录论述:定点小数的运算十进制下非负定点小数的乘法十进制下非负定点小数的加法十进制下非负定点小数的除法二进制下定点小数的乘法二进制下定点小数的加法二进制下定点小数的除法等等,是不是漏了减法...总结使用定点小数,可以将小数的存储和运算,转化为整数的存储和运算。由于定点小数通常在硬件计算中使用,故而,我们尤其关心的是二进制下的定...原创 2019-03-24 22:45:37 · 8282 阅读 · 1 评论