![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
数字小IP设计
文章平均质量分 51
分享数字IC设计的思考和收获
IC跳跳鱼
鱼会游泳不正常吗?我还会跳!
展开
-
<Verilog实现状态机>FSM(finite state machine)的简化型独热式(Simplified one hot)设计
一、FSM的独热结构改进设计在数字电路设计中,我们经常需要设计不同的状态机。很多现有的书中介绍了一些常用的状态机结构,并且介绍了一些这些状态机的优缺点。比如一段式,适用于简单的状态机,优点是写在一起代码量少,缺点包括不限于可读性差、适用范围小等。。。两段式将一段式的代码进行了拆分,分为状态的跳变和每个状态的信号变化两个部分。优点在于相对于一段式,进一步优化了可读性和设计的灵活性,代码的复用性也得到了一些提高。三段式就是书中介绍的最优结构状态机。三段式用一个时序逻辑描述状态的跳变。另一个时序逻辑描原创 2021-07-18 14:38:23 · 702 阅读 · 0 评论 -
Verilog中function函数及用法
verilog作为一种比较底层的语言,留给我们玩花活的空间本身并不多,但是不多不代表没有。作为一个技术性工程狮,不玩花活天理难容,就算语言底层,我们也要努力花起来,妖娆!function就是一个非常不错的花活道具,虽然在应用中不如task,但是作为唯二的花活道具,我们还是非常有必要掌握的。下面我们象征性来一段代码:function automatic unsigned[7:0] reverse (input [7:0] data);integer i;beginfor (i = 0; i <原创 2021-03-25 20:15:40 · 3211 阅读 · 0 评论 -
<数字小IP设计> 六、Verilog实现CRC校验算法,CRC32/16/12/8 verilog实现
一,CRC介绍CRC(Cycle Redundancy Check),是一种核对数据正确性的高效的验证手段。其特点是检错能力强,开销小,易于用编码器及检测电路实现。从其检错能力来看,它所不能发现的错误的几率仅为0.0047%以下。从性能上和开销上考虑,均远远优于奇偶校验及算术和校验等方式。因此广泛应用于数据存储和数据传输领域。...原创 2021-03-25 00:05:10 · 3076 阅读 · 2 评论 -
<对职业的思考> 2020年终总结,自我提升永不止步
2020结束了,诚实的说,这半年我是努力的。总结加班不少,每天早上8:40踏进公司,晚上10点从公司跑路。风雨无阻:不管是刮风还是下雨都不能改变我的作息。周末加班:每周加班额外加班一天,这也导致我过年连着请了半个月调休假。林林总总算下来,我这半年的工作时间快比得上别人一年了。工作方面,我进步很大:从学校里的啥都不会,到现在逐渐能解决一些问题,参与项目完整的做一个模块,参与大项目的验证,写着task,还做了人生第一个test_pattern。完整的参与一个项目很重要,现在已经可以自豪的宣称自己是业内人士原创 2021-02-17 10:46:49 · 323 阅读 · 5 评论 -
Verilog中dump函数、具体用法及应用场景
前两天在工作中需要用到verilog的dump函数,一番百度之后发现网上只有一种内容,但是很多人都在传播那一份博文,谁是原创也说不清楚,原博文内容也写的模模糊糊,仅仅具有极有限的参考价值。下面我来结合实际应用,具体介绍一下工作中的常用dump函数及应用场景Verilog提供一系列系统任务用于记录信号值变化,常见的格式有vcd,fsdb等。.fsdb文件常用于verdi等软件,可以用来做仿真后查看波形。.vcd文件可以用于板级验证及芯片的验证。$dumpfile(NUM,"file.fsdb");原创 2021-02-16 21:30:23 · 4105 阅读 · 0 评论 -
<数字小IP设计> 五、高频时钟域脉冲信号同步至低频时钟域
在实际设计中,我们经常会碰到一些很特殊的应用场景:比如高频的总线中传输的控制信号,要在低频的电路中使用。如果高频信号是一个保持相当长时间的信号,我们只要进行简单的2FF同步即可,但是如果高频的信号是一个周期的短时间信号,那么在低频时钟域的电路看来,高频信号本身与一个不定时产生的毛刺会产生相同性质的问题:包括采样误判,信号误读,完全没有反应等。所以我们需要以一个电路来解决这样的问题,这个小模块可以为类似的电路提供通用的解决方案,同时在此基础上我们可以尽量的压缩其面积和逻辑,让他达到最小面积解决问题的程度,添原创 2021-01-25 22:45:20 · 1550 阅读 · 0 评论 -
<数字小IP设计>四,task的使用。
Verilog中的task块的使用非常值得仔细思考。task可以加入时序控制逻辑,可以没有输入也可以没有输出,甚至可以没有输入输出。task的使用也非常灵活,可以连续调用,也可以互相调用。在task 后加上[automatic]后可以并行调用,系统可以自动生成相应的变量,非常方便。之前在GPIO模块中我们使用了reg_bus作为系统与模块通讯的桥梁。在对GPIO进行测试的时候,我们需要模仿系统与模块的通讯行为,但是GPIO模块挂载的附加功能越多,我们需要进行的访问动作也越多。这种需要重复进行且大部分动作原创 2020-11-04 20:55:30 · 377 阅读 · 0 评论 -
<数字小IP设计> 三:中断产生模块
module INTERRUPT(input clk_i,input rst_i,input en_i,input clr_i,input type_i,input pn_i,input select_i,input dat_i,output reg intr_flg_o);reg dat_d;wire dat_pos,dat_neg,dat_pn;always @ (posedge clk_i or posedge rst_i)beginif(rst_i)dat_d <原创 2020-10-22 21:25:28 · 613 阅读 · 0 评论