收藏 分享(赏)

数字电路设计中需要考虑的问题2.doc

上传人:精品资料 文档编号:7609104 上传时间:2019-05-22 格式:DOC 页数:14 大小:58KB
下载 相关 举报
数字电路设计中需要考虑的问题2.doc_第1页
第1页 / 共14页
数字电路设计中需要考虑的问题2.doc_第2页
第2页 / 共14页
数字电路设计中需要考虑的问题2.doc_第3页
第3页 / 共14页
数字电路设计中需要考虑的问题2.doc_第4页
第4页 / 共14页
数字电路设计中需要考虑的问题2.doc_第5页
第5页 / 共14页
点击查看更多>>
资源描述

1、数字电路设计中需要考虑的问题 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) BaudGeneAcc 01-11

2、-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_tmp) /门控时钟 begin l

3、ed2 = in2; end / one hot,独热嘛,一看就明白,就是只有一位是高电平。独热码 使用的触发器较多,但可减少实现状态机的组合逻辑数目,减少复杂性,提高系统的速度,即工作时钟频率可以做到最高。格雷码是使用最小数目的触发器来编码状态机,但形成的组合逻辑比较复杂。 使用独热码编码时,会出现很多未使用的状态,而使用二进制编码和格雷码编码时,如果状态机的状态数不是 2的指数次方时,也会出现未使用状态。 格雷码每个相邻的状态切换只有一个 bit的信号跳变,适用于异步握手的情况,比如异步 FIFO的指针计数 2*N分频方法,计数到 N-1,计数归零,同时翻转输出 reg LED;以前好像是

4、这样弄的,计数到 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 i; for(i = 0; i = 1; i =

5、 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:异步

8、 FIFO 1.clock: 该选项用来约束时钟信号的特征 尽量在时钟约束中对设计中的所有时钟加以约束,即在“clock“约束中列出所有时钟;synplify pro一般会对扇出(fanout)最多的时钟自动使用全局时钟资源,以达到更高的时钟性能、较小的时钟抖动和延迟 在多个时钟有密切关联时使用,如从某个时钟分频、倍频出的时钟要分成一组 综合及优化过程会认为同一组中的时钟是同步的,并自动分析时钟时间的 cross-clock; 不相关的时钟一定要分配到不同的分组中去; 综合和优化过程认为不同组的时钟是异步的,从而默认定义这些时钟域之间路径为 false paths约束路径2.clock to

9、clock 该选项用来约束两个时钟的边沿之间的“数据路径延时大小“,优先级高于 clock约束项; 如果两个时钟是异步的(位于不同时钟域内),则它们之间的数据路径要指定为 false path; 如果两个时钟是同步的,但是有相对偏斜(skew),则需要指定它们之间的偏斜时间(数据路径延时大小);3.inputs/outputs 该选项用来约束 inputdelay(输入延迟)和 outputdelay(输出延迟);输入输出延迟是描述信号在外部寄存器和芯片输入输出管脚之间的延时,一般情况下不用考虑;4.register 该选项用来约束“用户指定的寄存器“的输入延迟和输出延迟5.multi-cyc

10、le path 某些寄存器或者路径需要多个时钟周期才会完成变化(变化比较缓慢);该选项用来指出具体的“多时钟路径“(需要多个时钟周期才会完成变化的路径) 合理的设置 multi-cycle path约束会使综合引擎将优化的重点放在真正的关键路径上(critical path),而不会因为对多时钟周期路径的过约束造成整体优化结果的恶化6.false paths被指定为 false paths的路径将不受通用约束的限制,该选项一般作为某些慢速路径和特殊路径的约束; 综合引擎对 false paths的处理优先级最低,可以不管 7.max delay 该选项用来约束点到点的路径的最大延迟时间; 约束

11、对象也是一条路径,为用户提供了单条路径延迟的手段设计一个自动饮料售卖机,饮料 10分钱,硬币有 5分和 10分两种,并考虑找零?设计过程:设定三个状态:0 分,5 分;当状态为 0分时,接收到 5分信号脉冲后转为 5分;接收到 10分信号脉冲时,转到 0分状态,同时弹出饮料,不找零;状态为 5分时,接受到 5分信号,弹出饮料,不找零,返回 0分状态;当接受到 10分状态时,弹出饮料,找零,并返回零分状态。module auto_seller( input clk, input five_cent, /丢进 5分钱, 会产生一个脉冲,宽度超过一个 clk input ten_cent, /丢进

12、10分钱,会产生一个脉冲,宽度超过一个 clk output reg back_money, /一个脉冲触发找零 5分,脉冲宽度仅一个 clk周期 output reg drink /一个脉冲触发出货一瓶饮料,脉冲宽度仅一个 clk周期 ); /rising edge detection reg five_cent_tmp1 = 0; /no need,but for the sake of simulation,have nothing to do with the synplifyed circuitreg five_cent_tmp2; reg ten_cent_tmp1 = 0; /n

13、o need,for the sake of simulation,have nothing to do with the synplifyed circuit reg ten_cent_tmp2; always (posedge clk) begin five_cent_tmp1 = five_cent; /synchronised to clk five_cent_tmp2 = five_cent_tmp1; end wire five_cent_pulse = (five_cent_tmp2) /rising edge detection always (posedge clk) beg

14、in ten_cent_tmp1 = ten_cent; /synchronised to clk ten_cent_tmp2 = ten_cent_tmp1; end wire ten_cent_pulse = (ten_cent_tmp2) / reg state; /?2? /? always (posedge clk) begin case(state) 1b0 : begin if(five_cent_pulse) state = 1; else if(ten_cent_pulse) state = 0; end 1b1 : begin if(five_cent_pulse) sta

15、te = 0; else if(ten_cent_pulse) state = 1; end default: state = 0; endcase end /? always (posedge clk) begin case(state) 1b0 : begin if(ten_cent_pulse) drink = 1; else drink = 0; end 1b1 : begin if(five_cent_pulse) drink = 1; else if(ten_cent_pulse) begin drink = 1; back_money = 1; end else begin dr

16、ink = 0; back_money = 0; end end default: begin back_money = 0; drink = 0; end endcase end endmodule IIC总线主控器向被控器发送的信息种类有:启动信号、停止信号、7 位地址码、读写控制位、10 位地址码、数据字节、重启动信号(主控读) 、应答信号(主控读) 、时钟脉冲。被控器向主控器发送的信息种类有:应答信号、数据字节、时钟低电平。 两个主器件在每次发出一个数据位的同时都要对自己输出端的信号电平进行抽检,只要抽检的结果与它们自己预期的电平相符,就会继续占用总线,否则放弃总线控制权;系统实际上遵

17、循的是“低电平优先”的仲裁原则,将总线判给在数据线上先发送低电平的主器件,而其他发送高电平的主器件将失去总线控制权 总线空闲状态:SDA 和 SCL两条信号线同时处于高电平时,规定为总线的空闲状态 在时钟线 SCL保持高电平期间,数据线 SDA上的电平被拉低(即负跳变) ,定义为 I2C总线总线的启动信号 建立启动信号之前 I2C总线必须处于空闲状态 建立停止信号之后,I2C 总线将返回空闲状态 只有在 SCL为低电平期间,才允许 SDA上的电平改变状态 重启动信号 Sr既作为前一次数据传输的结束,又作为后一次数据传输的开始。利用重启动信号的优点是,在前后两次通信之间主控器不需要释放总线,这样

18、就不会丢失总线的控制权,即不让其他主器件节点抢占总线。主控制器读某个地址上的数据,先发送器件地址,再发送读地址,然后重启,接着就可以读数据了,其间一直占用总线。 如果一接收器件在完成其他功能(如一内部中断)前不能接收另一数据的完整字节时,它可以保持时钟线 SCL为低,以促使发送器进入等待状态; 注意:verilog 的两个 module如果都定义了 inout端口,如果两个端口用wire连接在一起,则一个模块中设为高阻,在另外一个模块中同样是高阻了,这样任何一方都检测不到信号了解决办法是1)不要在两个模块同时用 inout,inout 一般是直接映射到端口与外界通信的,内部不要用 inout2

19、)一方要检测 sda信号的,可以另外加一个输入(非高阻的)例如:input sda_wire; output sda_out;assign sda_out = sda_r; /sda_r是 reg型, 信号在 FPGA器件内部通过连线和逻辑单元时,都有一定的延时。延时的大小与连线的长短和逻辑单元的数目有关,同时还受器件的制造工艺,工作电压,温度等条件的影响。毛刺不出现在时钟的沿口并且不满足数据的建立和保持时间,就不会对系统造成危害(由于毛刺很短,多为几纳秒,基本上都不可能满足建立和保持时间)在数字电路设计中,常常采用格雷码计数器取代普通的二进制计数器,这是因为格雷码计数器的输出每次只有一位跳变,消除了竞争冒险的发生条件,避免了毛刺的产生 D触发器寄存输出,可以过滤掉一些毛刺 在使能信号有效时采样输出(使能信号在输出稳定其间有效)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报