摘要:
阅读全文
摘要:
即使用HDL编码,进行RTL级的实现。 RTL设计中的一大问题就是异步时钟设计。最简单的,对于电平信号,如一些flag信号或者慢速的控制信号,处理方法是在新时钟域中对该信号进行2级寄存器寄存,减少亚稳态的发生。对于脉冲处理,可以采用握手协议(req-ack)。 如果前级时钟快,后级时钟慢,则需要采用FIFO设计。同步FIFO比较简单,读写时钟相同。异步FIFO比较困难,难点之一就是读写地址的判断。由于读写地址的产生在不同时钟域中,而它们的判断需要在同一时钟域中进行,这本身就涉及到异步信号的处理问题。对于读写地址的判断,一般采用格雷码解决。 RTL设计中时钟本身的设计问题也需要注意。尽... 阅读全文
摘要:
主要设计到功能定义及架构设计,总线架构的配置,模块设计,数据流的分配,时钟设计等问题。总线包括模块之间、模块和MCU之间、外部主机和芯片之间通信等等。时钟涉及到数据流的规划,通信接口或内部MCU的时钟约定,工艺条件、功耗等因素。模块设计需要明确接口和定义。无论时钟还是电压,都可以通过控制开关来实现功耗要求。时钟实现比较简单,电压控制一般是实现在集成有电源管理芯片的较大规模芯片上。但未来的设计趋势是,即使没有电源管理芯片,电压gating也需要纳入考虑范围。在soc系统设计上,一个重要环节是MCU内核的选型(如cortexA, R, M等系列),对于硬件设计人员,不需要对它的指令集了解太多,但需 阅读全文
摘要:
1、一个模块(module)里面最好存在一个clk;因此在fifo_mem模块内只使用w_clk时钟,不使用r_clk时钟。2、为判断FIFO的空(empty)、满(full)状态,需将写操作指针(w_ptr)、读操作指针(r_ptr)进行比较,因此需要将w_ptr同步到r_ptr时钟域,以及将r_ptr同步到w_ptr时钟域;使用常用的两级寄存器进行寄存。3、读写地址(w_addr、r_addr)使用二进制,读写指针(w_ptr、r_ptr)因为需要同步到异步时钟域上,因此使用格雷码。4、由二进制转换为格雷码的逻辑:gray_code = (bin_code << 1) ^ bi 阅读全文