《数字电路设计中需要考虑的问题2》由会员分享,可在线阅读,更多相关《数字电路设计中需要考虑的问题2(14页珍藏版)》请在金锄头文库上搜索。
1、数字电路设计中需要考虑的问题数字电路设计中需要考虑的问题 2 2/波特率产生方法很经典,BaudTick 仅持续一个 clk /BaudGeneInc 编译后是常量,不消耗逻辑资源的,已经验证了wire BaudGeneAccWidth:0 BaudGeneInc = (Baud5)/(Clk_Freq4);/constantwire BaudTick = BaudGeneAccBaudGeneAccWidth; parameter Delay_Clk = Clk_Freq/Baud/2 - 2; /编译后是常量always (posedge clk) begin if(clean_en) B
2、audGeneAcc 01-11-10-00(卡诺图的排布方式) 可以减少功耗 gray 一般是用在不同时钟域的连续数值的传送,即数据必须是递增或递减的 always (*) begin if(clk_en) /这样综合就是 latch,如果是 always (posedge clk)则可能综合为 latch,但是不一定是led1 = in1; end 推荐的门控时钟reg clk_en_reg; always (posedge clk) begin clk_en_reg = clk_en; end wire clk_tmp = clk_en_reg always (posedge clk_t
3、mp) /门控时钟 begin led2 = in2; end / one hot,独热嘛,一看就明白,就是只有一位是高电平。独热码 使用的触发器较多,但可减少实现状态机的组合逻辑数目,减少复杂性,提高系统的速度,即工作时钟频率可以做到最高。格雷码是使用最小数目的触发器来编码状态机,但形成的组合逻辑比较复杂。 使用独热码编码时,会出现很多未使用的状态,而使用二进制编码和格雷码编码时,如果状态机的状态数不是 2 的指数次方时,也会出现未使用状态。 格雷码每个相邻的状态切换只有一个 bit 的信号跳变,适用于异步握手的情况,比如异步 FIFO 的指针计数 2*N 分频方法,计数到 N-1,计数归零
4、,同时翻转输出 reg LED;以前好像是这样弄的,计数到 2*N - 1,计数归 0,然后 cnt N 时输出mydff #(1) unit( /例化时用传进的参数覆盖模块mydff 中定义的参数 .clk(clk), .ena(clk_en),.in(in10), .out(led1) ); generate 的用法;1)实现多次例化 generate for 2)多次 assign 赋值 3)generate if module test1( input clk, input clk_en, input 0:1 in1, output 1:0 led ); generate genvar
5、 i; for(i = 0; i = 1; i = i + 1) begin : inst /inst is needed name insti.unitmy_dff unit( .clk(clk), .ena(clk_en), .in(in1i), .out(ledi) ); end endgenerate endmodule / module my_dff( input clk, input in, input ena, output reg out ); always (posedge clk) begin if(ena) out = in; end endmodule / 在寄存器赋值
6、时加一点延时仅对仿真有好处,但是在综合时将忽略所有的延时语句 电路设计的难点在时序设计,时序设计的实质就是满足每一个触发器的建立/保持时间的而要求 也就是说最小的时钟周期 Tmin =TcoTdelayTsetup,即最快的时钟频率 Fmax =1/Tmin。FPGA 开发软件也是通过这种方法来计算系统最高运行速度 Fmax。因为 Tco 和 Tsetup 是由具体的器件工艺决定的,故设计电路时只能改变组合逻辑的延迟时间Tdelay,所以说缩短触发器间组合逻辑的延时时间是提高同步电路速度的关键所在。故只有缩短最长延时路径,才能提高电路的工作频率。可以将较大的组合逻辑分解为较小的 N 块,通过适
7、当的方法平均分配组合逻辑,然后在中间插入触发器,并和原触发器使用相同的时钟,就可以避免在两个触发器之间出现过大的延时,消除速度瓶颈,这样可以提高电路的工作频率。这就是所谓“流水线“技术的基本设计思想,即原设计速度受限部分用一个时钟周期实现,采用流水线技术插入触发器后,可用 N 个时钟周期实现,因此系统的工作速度可以加快,吞吐量加大。注意,流水线设计会在原数据通路上加入延时,另外硬件面积也会稍有增加。 FIFO 速率匹配,不同时钟域数据传输 对以一位的异步信号可以使用“一位同步器进行同步” ,而对于多位的异步信号,可以采用如下方法:1:可以采用保持寄存器加握手信号的方法(多数据,控制,地址) ;2:特殊的具体应用电路结构,根据应用的不同而不同 ;3:异步 FIFO 1.clock: 该选项用来约束时钟信号的特征 尽量在时钟约束中对设计中的所有时钟加以约束,即在“clock“约束中列出所有时钟;synplify pro 一般会对扇出(fanout)最多的时钟自动使用全局时钟资源,以达到更高的时钟性能、较小的时钟抖动和延迟 在多个时钟有密切关联时使用,如从某个时钟分频、倍频出的时钟要分成一组 综合及优化过程会认为同一组中的时钟是同步的,并自动分析时钟时间的 cross-clock; 不相关的时钟一定要分配到不同的分组中去;