一种实现位填充的并行设计电路的制作方法

文档序号:6337623阅读:132来源:国知局
专利名称:一种实现位填充的并行设计电路的制作方法
技术领域
本发明涉及USB接口设计电路,尤其涉及一种实现位填充的并行设计电路。
背景技术
随着微电子技术的快速发展,USB2. 0接口的设备已经大量应用于日常生活的电子产品中。USB是一种串行总线,数据逐位依次传送。USB系统中数据传输采用反向非归零 (NRZI,Non Return to Zero Invert)编码方式,这种编码方式既能保证数据传送的完整性, 又不需要独立的时钟信号和数据一起发送。当遇到O信号时NRZI编码数据流发生跳变;当遇到1信号时保持不变。数据流中的跳变使解码器可以与收到的数据保持同步,因而不必提供独立的时钟信号。但一长串的连续1将会导致无电平跳变,从而引起接收端最终丢失同步信号。解决的办法是采用位填充技术,即在连续传输六个1的情况下填充一个0,使得 NRZI编码数据流中发生跳变,这就确保接收器至少可以在每七个的时间间隔内从数据流中会检测到一次跳变,从而使接收器和传送的数据保持同步。UTMI发送端负责在NRZI编码前的数据流中插入一个O填充位。UTMI接收端须在NRZI解码后的数据中,当出现六个连续1 后,把其后的一个O给填充出来并丢弃,实现位填充操作。如果留个连续的1后,跟随的不是O而是1,则产生出错信号。

发明内容
本发明目的提供一种实现位填充的并行设计电路,采用位宽为8比特,时钟为 60MHz的设计电路实现串行处理位填充操作,与普通应用中的串行设计电路相比,能大大地降低电路的功耗。一种实现位填充的并行设计电路,包含延迟单元、判断对象重组单元、参照对象重组单元、判断单元、填充单元以及累加单元。延迟单元,用于对输入数据进行时钟周期的延迟;判断对象重组单元,用于对经时钟周期延迟的数据进行重组并输出判断对象;参照对象重组单元,用于对电路的输出数据进行重组并输出参照对象;判断单元,用于根据参照对象,对判断对象进行判断,哪些需要被填充,并输出判断结果到填充单元;填充单元,用于进行位填充操作,并把当前填充的位的个数输出到累加单元,把位填充后的结果作为整个电路的运行结果输出;累加单元,用于对被填充的位的个数进行累加,并将结果输出到判断对象重组单元输入端;输入端输入数据的位宽为8比特,输出数据的位宽为8比特,工作时钟为60MHz,延迟单元产生三个延迟后的数据,其中,din_dl是延迟一个时钟周期后的数据,din_d2是延迟两个时钟周期后的数据,din_d3是延迟三个时钟周期后的数据。延迟单元产生的三个输出数据都集中输入到判断对象重组单元,重组输出判断对象。参照对象重组单元通过取电路输出结果来重组参照对象。参照对象的设定方法为取电路输出结果的高6位,判断对象的设定方法为1)当已被填充的0的个数为0时,判断对象为din_dl[7:0];2)当已被填充的0的个数为1时,判断对象为{din_dl[6:0],din_d2[7]};3)当已被填充的0的个数为2时,判断对象为{din_dl[5:0],din_d2[7:6]};4)当已被填充的0的个数为3时,判断对象为{din_dl[4:0],din_d2[7:5]};5)当已被填充的0的个数为4时,判断对象为{din_dl[3:0],din_d2[7:4]};6)当已被填充的0的个数为5时,判断对象为{din_dl[2:0], din _2[7:3]};7)当已被填充的0的个数为6时,判断对象为{din_dl[l:0],din_d2[7:2]};8)当已被填充的0的个数为7时,判断对象为{din_dl
,din_d2[7:l]};9)当已被填充的0的个数为8时,判断对象为din_d2[7:0],情况与当已被填充的 0的个数为0时类似;10)当已被填充的0的个数为9时,判断对象为{din_d2[6:0], din_d3 [7]},情况与当已被填充的0的个数为1时类同;当被填充的0的个数为9时,情况与当被填充的0的个数为1时类同,依此类推。 其中设定din[7:0]是当前这个时钟周期输入的8比特数据,din_dl[7:0]是din[7:0]的前一个时钟周期的8比特数据,din_d2[7:0]是din_dl[7:0]的前一个时钟周期的8比特数据,din_d3[7]是din_d2[7:0]的前一个时钟周期的1比特数据。参照对象重组单元输出的参照对象直接输入判断单元,判断对象重组单元输出的判断对象分别连接到判断单元和填充单元的输入端,判断单元根据位填充的数量和对象的查找方法来判断判断对象中哪些需要被填充,并把判断结果输出到填充单元。位填充的数量和对象的查找方法为(其中refer_obj为参考对象,judge_obj为判断对象)1)当参照对象refer_obj[5:0]的值为6’ bll_llll时,如果判断对象judge_ obj [5:0]的值为 6,bll_llll 时,填充两位在 judge_obj
前和 judge_obj [6]前各填充一位0 ;如果判断对象judge_obj[6:0]的值为V blll_1110时,在judge_obj
前和 judge_ob j [7]前各填充一位0 ;否则只在judge_obj
前填充一位0 ;2)当参照对象refer_obj[5:0]的值为6’ bll_1110时,如果判断对象judge_ obj
的值为 1,bl,且 judge_obj[6:l]的值为 6,bll_llll 时,在 judge_obj[l]前和judge_obj [7]前各填充一位0 ;如果判断对象judge_obj
的值为1,bl,且judge, obj [6:1]的值不为6,bll_llll时,在judge_obj[l]前填充一位0 ;如果判断对象judge, obj [6:0]的值为7’ blll_1110时,在judge_0bj[7]前填充一位0 ;否则不填充数据;3)当参照对象refer_obj[5:l]的值为5’ bl_1110时,如果判断对象judge_ obj [1:0]的值为2,bll时,在judge_obj[2]前填充一位0 ;如果判断对象judge_obj [60] 的值为7’ blll_1110时,在judge_ob j [7]前填充一位0 ;否则不填充数据;4)当参照对象refer_ob j [5:2]的值为4’ bl 110时,如果判断对象judge_ obj [2:0]的值为3’blll时,在judge_obj[3]前填充一位0 ;如果判断对象judge_obj W0] 的值为7,blll_1110时,在judge_0bj[7]前填充一位0 ;否则不填充数据;5)当参照对象refer_obj[5:3]的值为3'bllO时,如果判断对象judge_obj [30] 的值为4,bllll时,在judge_obj[4]前填充一位0 ;如果判断对象judge_obj [60]的值为V blll_1110时,在judge_0bj[7]前填充一位0 ;否则不填充数据;6)当参照对象refer_obj[5:4]的值为2’ blO时,如果判断对象judge_obj 的值为5,bl_llll时,在judge_obj[5]前填充一位0 ;如果判断对象judge_obj [60]的值为V blll_1110时,在judge_obj [7]前填充一位0 ;否则不填充数据;7)当参照对象refer_obj [5]的值为1,b0时,如果判断对象judge_obj [5:0]的值为6,bll_llll时,在judge_obj [6]前填充一位0 ;如果判断对象judge_obj [60]的值为7,blll_1110时,在judge_obj [7]前填充一位0 ;否则不填充数据;填充单元进行位填充操作,把当前被填充的位的个数输出给累加单元,将位填充后的结果作为整个电路的运行结果输出。


图1位填充操作示意2判断对象的设定示意3本发明提出的位填充的并行设计电路结构图
具体实施方案以下结合各附图对本发明提出的实现位填充的并行设计电路进行详细的描述。结合如图1所示,第一个波形表示原始数据,第二个波形表示位填充处理后的数据;可以看到在数据流中第7个和第8个1之间的0 (用箭头表示)被选中为需填充的位, 填充操作完成后,被填充位后的数据串与被填充位前的数据串连接在一起,数据多了一比特,如第二个波形所示。如图2所示,阴影部分是8比特数据的判断对象。以图1数据串为例进行详细的说明,有助于理解本发明的技术解决方案及所产生的有益效果。原始的数据为M ‘blllOOllllOOlllllllllllOl,当前一个时钟周期的输出结果为8’ bllll_1101,则根据本发明提出的参照对象的设定方法可知,参照对象refer_ obj [5:0]是6’ bll_llll ;假设当前已填充0的个数为0,根据本发明提出的判断对象的设定方法中当已被填充的0的个数为0时,判断对象judge_Obj[7:0]为8,bl001_llll ; 根据本发明提出的位填充的数量和对象的查找方法,即当参照对象refer_obj [5:0]的值为6’ bll_llll时,如果判断对象judge_obj[5:0]的值为6’ bll_llll时,填充两位在 judge_ob j
前和judge_obj[6]前各填充一位0 ;如果判断对象judge_ob j W 0]的值为 7,blll_1110时,填充两位在judge_ob j
前和judge_ob j [7]前各填充一位0 ;否则,只在judge_0b j
前填充一位0。在judge_0b j
前填充一位0,填充操作完成后,数据序列如图1第二个波形所示,输出的结果为8,b0011_1110。
权利要求
1.一种实现位填充的并行设计电路,其特征在于所述电路包含延迟单元、判断对象重组单元、参照对象重组单元、判断单元、填充单元和累加单元。
2.如权利要求1所述的一种实现位填充的并行设计电路,其特征在于所述延迟单元对输入端数据进行延迟。
3.如权利要求1所述的一种实现位填充的并行设计电路,其特征在于所述判断对象重组单元设定并输出判断对象。
4.如权利要求1或3所述的一种实现位填充的并行设计电路,其特征在于所述判断对象重组单元采用以下模式设定判断对象1)当已被填充的0的个数为0时,判断对象为din_dl[7:0];2)当已被填充的0的个数为1时,判断对象为{din_dl[6:0],din_d2[7]};3)当已被填充的0的个数为2时,判断对象为{din_dl[5:0],din_d2[7:6]};4)当已被填充的0的个数为3时,判断对象为{din_dl[4:0],din_d2[7:5]};5)当已被填充的0的个数为4时,判断对象为{din_dl[3:0],din_d2[7:4]};6)当已被填充的0的个数为5时,判断对象为{din_dl[2:0],din_d2[7:3]};7)当已被填充的0的个数为6时,判断对象为{din_dl[l:0],din_d2[7:2]};8)当已被填充的0的个数为7时,判断对象为{din_dl
,din_d2[7:l]};9)当已被填充的0的个数为8时,判断对象为din_d2[7:0],情况与当已被填充的0的个数为0时类同;10)当已被填充的0的个数为9时,判断对象为{din_d2[6:0],din_d3 [7]},情况与当已被填充的0的个数为1时类同。
5.如权利要求4所述的种实现位填充的并行设计电路,其特征在于当已被填充的0的个数为8或9的时候,输入数据停止一个时钟周期。
6.如权利要求1所述的一种实现位填充的并行设计电路,其特征在于所述判断对象重组单元输出的判断对象分别连接到判断单元和填充单元的输入端。
7.如权利要求1所述的一种实现位填充的并行设计电路,其特征在于所述参照对象重组单元通过取电路输出结果的高6位来设定参照对象。
8.如权利要求1所述的一种实现位填充的并行设计电路,其特征在于所述参照对象重组单元输出的参照对象连接到判断单元的输入端。
9.如权利要求1所述的一种实现位填充的并行设计电路,其特征在于所述判断单元判断需进行位填充的数量和查找哪些位需要被填充,并把判断结果输出到填充单元。
10.如权利要求1或9所述的一种实现位填充的并行设计电路,其特征在于所述判断单元判断位填充的数量和查找哪些位需要被填充的方法为1)当参照对象refer_obj[5:0]的值为6’bll_llll时,如果判断对象judge_obj[50] 的值为6,bll_llll时,在judge_obj
前和judge_obj [6]前各填充一位0 ;如果判断对象 judge_obj[6:0]的值为 7,blll_1110 时,在 judge_ob j
前和 judge_ob j [7]前各填充一位0,否则只在judge_ob j
前填充一位0 ;2)当参照对象refer_obj[5:0]的值为6’bll_1110时,如果判断对象judge_obj
的值为 1,bl,且 judge_obj[6:l]的值为 6,bll_llll 时,在 judge_obj[l]前和 judge_ obj [7]前各填充一位0 ;如果判断对象judge_obj
的值为1,bl,且judge_0bK6:l]的值不为6,bll_llll时,在judge_obj[l]前填充一位0 ;如果判断对象judge_obj [60]的值为7,blll_1110时,在judge_0bj[7]前填充一位0,否则不填充数据;3)当参照对象refer_obj[5:l]的值为5’bl_1110时,如果判断对象judge_ob j [1 0] 的值为2,bll时,在judge_0bj[2]前填充一位0 ;如果判断对象judge_obj[6:0]的值为 7’ blll_1110时,在judge_ob j [7]前填充一位0,否则不填充数据;4)当参照对象refer_obj[5:2]的值为4’blllO时,如果判断对象judge_obj [20] 的值为3,bill时,在judge_obj [3]前填充一位0 ;如果判断对象judge_obj [60]的值为 7’ bll 1_1110时,在judge_obj [7]前填充一位0,否则不填充数据;5)当参照对象refer_obj[5:3]的值为3’bllO时,如果判断对象judge_obj [3:0]的值为4,bllll时,在judge_obj[4]前填充一位0 ;如果判断对象judge_obj [60]的值为 7,blll_1110时,在judge_0bj[7]前填充一位0,否则不填充数据;6)当参照对象refer_obj[5:4]的值为2’bl0时,如果判断对象judge_obj的值为5,bl_llll时,在judge_obj[5]前填充一位0 ;如果判断对象judge_obj [60]的值为 7,blll_1110时,在judge_0bj[7]前填充一位0,否则不填充数据;7)当参照对象refer_obj[5]的值为1’b0时,如果判断对象judge_obj [50]的值为6,bll_llll时,在judge_obj [6]前填充一位0 ;如果判断对象judge_obj [60]的值为 7,blll_1110时,在judge_0bj[7]前填充一位0 ;否则不填充数据。
11.如权利要求1所述的一种实现位填充的并行设计电路,其特征在于所述填充单元处理位填充操作,把当前被填充的位的个数输出给累加单元,并把位填充后的结果作为整个电路的运行结果输出。
12.如权利要求1所述的一种实现位填充的并行设计电路,其特征在于所述累加单元对被填充的位的个数进行累加,将结果输出到判断对象重组单元输入端。
全文摘要
本发明提供一种实现位填充的并行设计电路,包含延迟单元、判断对象重组单元、参照对象重组单元、判断单元、填充单元和累加单元。延迟单元对输入数据进行延迟,判断对象重组单元对经过时钟周期延迟的数据进行重组并输出判断对象。参照对象重组单元对电路输出的数据进行重组并输出参照对象。判断单元根据参照对象,对判断对象重组单元输出的判断对象进行判断,哪些位需要被填充,并输出判断结果到填充单元。填充单元进行位填充操作,并把当前填充的位的个数输出到累加单元,位填充后的结果作为整个电路的运行结果输出。累加单元对被填充的位的个数进行累加,并将结果输出到判断对象重组单元输入端。本发明与传统电路的设计及位填充操作相比,能大大地降低电路中的功耗。
文档编号G06F13/38GK102541784SQ20101057238
公开日2012年7月4日 申请日期2010年12月21日 优先权日2010年12月21日
发明者左耀华 申请人:上海华虹集成电路有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1