摘要: 两个不相关的时钟频率之间的数字前端·异步时钟切换电路异步切换会产生runt脉冲和毛刺使得系统不可靠。下面所示的电路揭示了这些问题的一个解决办法。 当选择(SELECT)输入稳定的时候(或者为高电平或者为低电平),这两个控制触发器处于相反的状态,两个时钟输入中的一个驱动时钟输出。 当选择(SELECT)输入变化时,这个影响要等到原来的选择的时钟源的下一个下降沿复位它的控制触发器之后才会有。输出时钟信号然后会保持低电平直到新选择时钟的下一个下降沿置位它的控制触发器,使得新选择的时钟来驱动输出时钟。 任何时钟切换都开始于原来选择的时钟变低时,输出时钟然后会保持低电平直到新选择的时钟先变低然 阅读全文
posted @ 2014-03-25 22:43 woaichengdian 阅读(865) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2014-03-25 22:33 woaichengdian 阅读(930) 评论(0) 推荐(0) 编辑
摘要: 即使用HDL编码,进行RTL级的实现。 RTL设计中的一大问题就是异步时钟设计。最简单的,对于电平信号,如一些flag信号或者慢速的控制信号,处理方法是在新时钟域中对该信号进行2级寄存器寄存,减少亚稳态的发生。对于脉冲处理,可以采用握手协议(req-ack)。 如果前级时钟快,后级时钟慢,则需要采用FIFO设计。同步FIFO比较简单,读写时钟相同。异步FIFO比较困难,难点之一就是读写地址的判断。由于读写地址的产生在不同时钟域中,而它们的判断需要在同一时钟域中进行,这本身就涉及到异步信号的处理问题。对于读写地址的判断,一般采用格雷码解决。 RTL设计中时钟本身的设计问题也需要注意。尽... 阅读全文
posted @ 2014-03-25 22:28 woaichengdian 阅读(740) 评论(0) 推荐(0) 编辑
摘要: 主要设计到功能定义及架构设计,总线架构的配置,模块设计,数据流的分配,时钟设计等问题。总线包括模块之间、模块和MCU之间、外部主机和芯片之间通信等等。时钟涉及到数据流的规划,通信接口或内部MCU的时钟约定,工艺条件、功耗等因素。模块设计需要明确接口和定义。无论时钟还是电压,都可以通过控制开关来实现功耗要求。时钟实现比较简单,电压控制一般是实现在集成有电源管理芯片的较大规模芯片上。但未来的设计趋势是,即使没有电源管理芯片,电压gating也需要纳入考虑范围。在soc系统设计上,一个重要环节是MCU内核的选型(如cortexA, R, M等系列),对于硬件设计人员,不需要对它的指令集了解太多,但需 阅读全文
posted @ 2014-03-25 22:27 woaichengdian 阅读(243) 评论(0) 推荐(0) 编辑
摘要: 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 阅读全文
posted @ 2014-03-25 22:26 woaichengdian 阅读(460) 评论(0) 推荐(0) 编辑