type
status
date
slug
summary
tags
category
icon
password
耽搁了两三个月,终于又拾起一生一芯……加强自身能力,以免工作露马脚。
写Verilog:前面都还能勉强完成,最后的实验七(状态机及键盘输入)有点打脑壳,看题目都看了几天。
📝 主旨内容
(一)一些摘抄
ROM的简单实现
复位时就初始化数据,工作时内部数据保持不变,而非输出数据。
异步FIFO
- 格雷码是二进制码右移1位再与原码相异或的结果,二进制转格雷码的Verilog代码实现为:
graycode = (bincode>>1) ^ bincode;
FIFO设计中的读写地址都是连续变化的,因此格雷码适用于FIFO的地址处理。
- FIFO深度选择 (1)写比读快:已知连续写数据的长度(Burst Length),那么只需要考虑这段时间内最多会写进多少个数,以及会读走多少个数,二者之差就是FIFO的深度。 (2)读比写快或差不多:FIFO的深度为1就可以了。
- 模块设计(待读)
顶层模块
async_fifo
、双端口RAM模块dualram
、同步模块1sync_r2w
、同步模块2sync_w2r
、空判断模块rptr_empty
、满判断模块wptr_full
(二)STA
。。。
。。。
🤗 总结归纳
。。。
📎 参考文章
将ps2_keyboard模块输出的data连接到LED灯,发现不亮,说明是此模块而非下游模块出问题,在此模块中再加入flag信号,发现ps2_clk没起振,终于发现问题出在C语言文件nv_top.cpp中对复位信号的描述,先赋1后赋0,相当于一直都在复位,当然没反应。故修改此复位值后系统就可以正常运行了!
- 作者:Sherilyn
- 链接:https://notion-next-green-nine-96.vercel.app//article/2024/09/28/10f01a1b-c456-8073-a5ae-cf2a480f9de4
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。