即使用HDL编码,进行RTL级的实现。
RTL设计中的一大问题就是异步时钟设计。最简单的,对于电平信号,如一些flag信号或者慢速的控制信号,处理方法是在新时钟域中对该信号进行2级寄存器寄存,减少亚稳态的发生。对于脉冲处理,可以采用握手协议(req-ack)。
如果前级时钟快,后级时钟慢,则需要采用FIFO设计。同步FIFO比较简单,读写时钟相同。异步FIFO比较困难,难点之一就是读写地址的判断。由于读写地址的产生在不同时钟域中,而它们的判断需要在同一时钟域中进行,这本身就涉及到异步信号的处理问题。对于读写地址的判断,一般采用格雷码解决。
RTL设计中时钟本身的设计问题也需要注意。尽量把时钟产生的电路放在单独的模块中,便于时钟的统一管理和约束,符合DFT设计思想。
RTL设计还涉及到代码的可综合性,面积和速度的考虑等等。