上周问题--总结
1、 奇偶分频时不考虑使用除法器做法:如果使用除法器将会占用大量的资源。
将需要用到的除法器部分进行下列的选择器替换:(e_out)/2替换为c_2,(o_out)/2替换为c_3. https://www.cnblogs.com/shadow-fish/p/13383903.html
reg [3:0]c_2,c_3; always @(posedge clk or negedge rst) begin if (!rst) begin c_2 <= 'b0 end else begin case(e_out)//偶分频 4'd2: c_2 = 'd1; 4'd4: c_2 = 'd2; 4'd6: c_2 = 'd3; 4'd8: c_2 = 'd4; 4'd10: c_2 = 'd5; 4'd12: c_2 = 'd6; 4'd14: c_2 = 'd7; endcase end end always @(posedge clk or negedge rst) begin if (!rst) begin c_3 <= 'b0 end else begin case(o_out)//偶分频 4'd1: c_3 = 'd0; 4'd3: c_3 = 'd1; 4'd5: c_3 = 'd2; 4'd7: c_3 = 'd3; 4'd9: c_3 = 'd4; 4'd11: c_3 = 'd5; 4'd13: c_3 = 'd6; 4'd15: c_3 = 'd7; endcase end end
2、门控时钟的实现方式:使用的是锁存器+与门,
为什么使用门控时钟能够降低动态功耗?
3、 建立时间和保持时间:需要保持建立时间和保持时间四条时序路径及满足的时序要求:https://www.cnblogs.com/shadow-fish/p/13472129.html
建立时间违例是即时还是在下一个时钟沿才能进行判断?---建立时间是在下一时钟沿才能进行判断
保持时间违例是即时还是下一个时钟沿才能进行判断?---保持时间是在本次时钟沿即可判断。
4、 同步FIFO的空满判断方式?
判断方法一:添加计数器:每写入一个数据,计数器加一,每读出一个数据,计数器减一,当计数器为0时,为空。当计数器等于存储深度,则为满。
判断方法二:对存储深度进行地址编码,而后地址最高位上再额外添加一位,通过对读写地址之间的关系进行判断---当读地址==写地址:判断为空。
当读写地址的最高位相反,其余位相同时,判断为满。
5、 异步FIFO的空满判断方式?---采样同步FIFO判断方法二相同的思路,但是不同的是:此时是使用格雷码进行空满判断。当使用格雷码进行空满判断时,
读写地址的最高位和次高位相反,其余位相同时,表示写满。读写地址完全相同时,表示写空。
为什么转换成格雷码进行空满判断? --- 因为异步FIFO存在跨时钟域传输问题,跨时钟域传输过程中,数据信号之间的转变会存在多bit发生变化,则在
进行空满判断时,会产生错误的判断信号,至此造成逻辑上的错误。https://www.cnblogs.com/shadow-fish/p/13390836.html
为什么转换成格雷码进行跨时钟域传输时,不再转换成二进制码进行空满判断?---完全没有必要,从读时钟域同步到写时钟域的地址格雷码在与写时钟域
的地址格雷码能够进行直接的空满判断,如果再进行格雷码到二进制码的转换,徒增器件。
6、 跨时钟域传输:慢时钟域到快时钟域传输?快时钟域到慢时钟域传输:信号脉冲扩展、握手协议(什么是握手协议,实现流程是什么)?
内容详解:https://www.cnblogs.com/shadow-fish/p/13526345.html
7、DC综合时--时钟约束命令:create_clock -period -10 -name HCLK -waveform[3 5 8 10][get_ports HCLK] (时钟名位HCLK,10ns一周期,0时为低,3ns上升沿,5ns下降沿,8ns上升沿,10ns下降沿)。