数字电路设计内容提要绪论电路设计规则电路设计流程电路验证方法电路实现结束语绪论认清数字电路设计电路设计的三个层次正确的入门方法数字电路的基本参数同步数字电路设计认清数字电路设计电路设计是一门艺术象艺术技巧一样,深不可测,奥妙无穷;电路设计工程师和艺术家一样,有发挥创造性的无限空间;电路设计所使用的“原料”和艺术作品一样,简单而且为所有人共知;电路的表现形式和艺术作品一样,相同的内容,相同的目的,可能会有不同的表现形式。……认清数字电路设计因为电路设计是一门艺术,所以它不可以速成;必须正确的入门方法;必须经常重复练习;在实现以前必须有完整的构思。认清数字电路设计举例:设计一个电路完成以下波形描述的功能。Clk0123D0QD0D1D2D3D1D2D3D0D1D2D3D0D1D2D3D0D1D2D3012301230123Cnt[1..0]认清数字电路设计利用选择器完成电路功能MuxCntClkD0QD1D2D3Sel认清数字电路设计利用移位寄存器完成电路功能CarryShiftCntClkD0QD1D2D3Load电路设计的三个层次完成功能能够完成电路要求完成的功能工作可靠电路的工作对外围环境要求最低;电路不受温度、工艺等因数的影响可重用(可移植)能方便的在别的电路中使用电路设计的三个层次举例设计一个UART的接收电路波特率19.2,偶校验,1位停止位起始位数据Uart_RxD7D6D5D4D3D2D1D0CD0校验位停止位电路设计的三个层次定义输入输出端口输入:UartRx、SysClk、Read输出:Data、New、ErrUartDataUartRxSysClkNewReadErr电路设计的三个层次功能实现(框图)下降沿检测接收定时控制采集时钟生成移位寄存奇偶/停止位标志产生UartRxSysClkReadErrDataNew电路设计的三个层次完成功能(电路图)电路设计的三个层次该电路能完成要求的功能,我们的设计已经结束我们来看下面情况:发送的时钟和接收的时钟源不同步传输中出现干扰读信号和接收时钟不同步接收电路伪同步这些都是可靠性问题电路设计的三个层次我们修改了电路,电路工作已经十分可靠,现在我们可以说设计结束了。如果我们我们接到另一个项目需要做一个URAT,要求有些不同:波特率、校验位、停止位可变;CPU中断响应慢这么办???电路设计的三个层次所以我们在设计电路时,最好能使电路可重用,或尽可能简单的修改原设计的情况下对电路进行移植。TDelay数字电路基本参数无时钟信号的电路(组合逻辑)In1In2In3Out对于组合逻辑的电路,在电路分析时只有输入到输出的延时(Tdelay),由于电路实现的原因,不同的输入到输出的延时不同,不同的工艺产生的延时不同,不同的温度会导致延时不同。数字电路基本参数有时钟信号的电路(时序电路)ClkQDDDCLKQDQThTsuTcoTsu:建立时间,表示在时钟有效沿前数据维持不变的时间Th:保持时间,表示在时钟有效沿后数据维持不变的时间Tco:输出延时,表示在时钟有效沿后数据输出的时间数字电路基本参数Tsu、Th是对输入信号中数据和时钟相位的表征,通常我们提及这两个参数时,一般是指器件对输入的要求,即要求输入的最小建立时间(Tsu)和最小保持时间(Th);触发器的这两个参数只与器件的工艺和温度有关当我们的输入的相位要求不能满足该要求时,触发器的值将不能达到预期结果(即我们常说的不确定)。数字电路基本参数对于一个触发器来说,Tsu+Th为一个常量。由于有外围电路的作用,我们所看到的最小建立时间(Tsu)和最小保持时间(Th)可能有变化。例如:数字电路基本参数触发器的Tco参数只与器件的工艺和温度有关由于时钟输入或数据输出电路上的延时,器件或模块的Tco可能会有变化,例如:数字电路基本参数我们现在已经学习了数字电路的基本参数:TDelayTsuThTcofmax???数字电路基本参数我们在电路中,实际上触发器和组合逻辑是以以下结构存在的:ClkDQDDQQDTcoTDelayTsuT=Tco+TDelay+Tsu当时钟沿有效时,经过时间T,信号传达到第二个寄存器。要使电路能可靠工作,必须Tclk≥T,如果满足此要求,时钟频率为fClk≤1/T;则fmax=1/T。同步数字电路设计在数字电路中为什么要使用同步数字电路?可靠性处理速度同步数字电路设计异步电路(组合逻辑电路):C0C1C2C3CnT0T1T3TnTDelay=T0+T1+T2+T3+……+TnT2TDelay同步数字电路设计同步电路(时序电路):C0C1C2C3CnDFFDFFDFFDFFT0T1T3TnT2TDelayClkTDelay=n╳TClk+Tco同步数字电路设计Tdelay与组合逻辑的延时(Tn)无关TDelay=n╳TClk+Tco因为fmax=1/(Tco+Tn+Tsu),Tn为触发器间的组合逻辑的最大的延时由于Tco和Tsu在同一芯片中基本上是个常数,所以Tn直接影响fmax。当TClkTn,组合逻辑的延时与TDelay无关。是?否?同步数字电路设计假设因为温度、工艺或布线改变,造成电路的延时改变了△t,对于异步电路:T=(T1+△t)+(T2+△t)+(T3+△t)+(T4+△t)……+(Tn+△t)=T1+T2+T3+T4……+Tn+△t╳n=TDelay+△t╳n变化引起的延时为△t╳n同步数字电路设计对于同步数字电路T=n╳TClk+(Tco+△t)=(n╳TClk+Tco)+△t=TDelay+△t变化引起的延时为△t所以同步数字电路的可靠性和移植性明显优于异步电路同步数字电路设计另外,由于同步数字电路只对在时钟有效沿附近的数据“感兴趣”,所以它可以将由于干扰造成的数据干扰和由于电路竞争冒险产生的毛刺“过滤”掉,从而大大的提高了电路的可靠性。同步数字电路设计同步电路使电路的速度是提高了还是降低了????快?慢?同步数字电路设计变慢了,为什么?异步电路:TDelay=T0+T1+T2+T3+……+Tn同步电路:TDelay=n╳TClk+Tco为了使同步电路的触发器工作稳定,必须保证TclkTmax,其中Tmax为T0、T1、T2、T3……Tn中最大的一个同步数字电路设计变快了,为什么?同步数字电路每间隔一个TClk可以处理一个数据,而异步电路需要每间隔Tdelay才能处理一个数据。就单位时间内处理的数据量而言,同步数字电路可以远远大于异步电路。所以我们说,使用同步数字电路的可以提高电路的运行速度。正确的入门方法从电路图设计入手可以很清楚电路是如何实现的;可以很清楚电路结构,或会有意识的对电路的模块进行划分;如果从语言入手必须熟悉电路,能很容易的读懂电路;对电路的不同描述方式,要清楚综合工具的综合结果正确的入门方法规范设计是入门的基础规范设计可以避免一些电路不可靠因素;真正可重用的电路绝对是规范的;电路的功能实现不是最有价值的东西,最有价值的是电路实现的思路;如果你的电路大家都看不懂,那绝对是“垃圾”;正确的入门方法注重仿真所有的电路都是调试出来的,不是设计出来的;不懂仿真,则永远无法成为电路设计高手;测试向量的完整性可以大大缩短硬件的调试时间。电路设计规则命名规则注释规则电路描述规则命名规则(1)名字必须有确定意义,且具有可读性。如:SysClk、Reset、SecondCnt、CnlAData不能取如下名字:X、A、B命名规则(2)名字之间的单词的第一个字母使用大写。如:TotalNumber、CalcError、FramerSearch、InputDataCounter不要将名字中全部取为大写或小写,如:CPUADDRESS、ramreaddata、fifoemptyTotalnumber、calcerror、framersearch、inputdatacounter、BASEADDR命名规则(3)在命名中使用_N的后缀表示低电平有效信号或下降沿有效的时钟,没有_N的信号均表示高电平有效或上升沿有效如:Reset_N,TxClk_NSyncLos=!FramerSync命名规则(4)在命名中使用_C的后缀或全部大写表示常量。如:DataWidth_C、DATAWIDTHBuffDepth_C、BUFFDEPTH命名规则(5)在命名中使用_B的后缀表示双向的变量或信号。如:CpuData_B表示CPU数据总线是双向的。命名规则(6)使用恰当的缩写,缩短名字的长度,同时不降低名字的可读性如:RdReadWrWriteEnEnableAvaAvailableAddrAddressAlmAlarmClkClockRstResetInInputOutOutput命名规则(7)名字中尽可能不出现数字,除非必须出现。如:E1Framer命名规则(8)避免单独使用以下字母和数字,更不允许在同一文件中的名字中使用以下字母和数字区别变量或信号名:I、l、1O、0、oS、5G、6如:RdCnt1、RdCntl、RdCntI命名规则(9)当文件中只包含一个模块时,文件名和模块名保持一致。当文件中有多个相关模块且没有顶层模块,模块名须与各模块的功能相关当一个模块中的子模块在别的电路中不会使用时,可以将子模块和顶层模块放置在一起,文件名和顶层模块名相同。注释规则代码注释是为了增强代码的可读性,注释的内容要求言简意赅。注释分为:文件或模块注释变量或信号注释电路注释特殊功能注释其他注释数字电路设计流程功能分析和模块定义确定重要信号传递方案代码设计和验证功能分析和模块定义自顶向下设计;对项目的各功能进行系统的分析,列出数字电路需要完成的各个功能;按以下原则划分各功能模块:功能确定接口最简成对原则模块最少定义模块间的接口;再将每个模块按以上原则和方法划分功能子模块,直到模块最小化功能分析和模块定义举例:设计一个SDH的四路E1映射的电路;电路接收信号为SDH开销处理后的并行数据和定时信号;上行总线接口为两条,每条的信号完全一样:输入:CLK19、SPE、C1J1V1输出:ADD、DATA[7:0]、PAR下行总线接口为两条,每条的信号全是输入且完全一样:CLK19、SPE、C1J1V1、DATA[7:0]、PAR功能分析和模块定义设计一个SDH的四路E1映射的电路;(续)CPU总线用于电路设置和告警处理输入:ADDR[7:0]、RD、WR、CE双向:DATA[7:0]E1接口为4条相同的接口信号输入:RPO(PCO)、RNO(RDO)输出:TPI(TCI)、TNI(TDI)要求完成以下功能:每个E1可以在任意的TU12位置分插上行时序可以在上行和下行四个时序中任意选择功能分析和模块定义设计一个SDH的四路E1映射的电路;(续)要求完成以下功能:(续)E1接口可选正/负双轨模式和NRZ/时钟模式根据下行总线工作状态实现倒换功能分析和模块定义SDH介绍功能分析和模块定义电路设计框图定时处理TIMEPOCESSCPU接口CPUINTERFACE上总线形成ADDGENERATE端口映射PORTMAP端口映射PORTMAP端口映射PORTMAP端口映射PORTMAP下行数据总线上行和下行控制总线CPU数据、地址和控制总线上行数据总线E1接口QE1MAP功能分析和模块定义各模块功能确定检查模块间接口最简检查成对设计检查模块最少检查定义模块间的接口确定重要信号传递方案确定电路的输入输出要求确定模块间的输入输出要求重要信号传递过程定时信号公用信号确定重要信号传递方案举例:代码设计和验证自底向上设计每一模块根据功能要求、接口定义和重要信号传递方案进行代码设