单片机初学者
我最近在准备,和师兄交流过,他说现在笔试题偶尔会要求写核心代码片段,比如格雷码转换或满空判断逻辑。细节考察很常见,尤其是异步处理部分。
格雷码跨时钟域同步两级是标准答案,原因是为了减少亚稳态导致系统错误的概率。不同频率比下,满空标志可能不是实时的,但不会出错,因为比较用的是同步后的指针。
防止虚空虚满,关键在于满空条件判断必须在同一个时钟域进行,比如空标志在读时钟域产生,用同步后的写指针和读指针比较。
用SystemVerilog写,可以多用logic类型,用package定义参数。面积优化方面,双端口RAM的选用很重要,小FIFO用寄存器,大FIFO用专用memory。指针比较器可以做成组合逻辑,但注意时序。
推荐在EDA Playground上找一些开源代码跑仿真,理解每个细节。笔试前多手画一下指针变化的格雷码序列,加深印象。
