基于SoC的双CPU连接桥设计
2008-12-03
作者:刘 佳1,2,李哲英1,2
摘 要: 采用一种新的总线桥" title="总线桥">总线桥网络连接方法,实现了由一个总线桥将两个CPU以及多个数字设备连接在一起的功能。重点研究了总线桥的整体结构设计及内部逻辑功能,并对其进行了详细分析及仿真验证。结果表明总线桥能够正确完成双CPU与公共设备之间的通信,提高了系统电路的工作速度和性能,很好地解决了多CPU与公共电路模块" title="电路模块">电路模块之间的通信问题。
关键词: 总线桥;SoC;双CPU
随着集成电路设计和制造技术的发展,在比较复杂的移动终端或控制终端设计中,往往使用模数" title="模数">模数混合信号" title="混合信号">混合信号SoC设计方法完成芯片设计[1-3]。使用模数混合信号SoC设计专用集成电路不仅可以提高系统电路工作速度,还可以增加系统的抗干扰能力,并保证系统工作安全[2][4]。
在模数混合信号SoC设计中,电路各不同部分的连接是关键问题。对仅含有一个CPU的SoC,可以使用总线方式完成各电路部分的连接,但对于含有2个或2个以上CPU的电路,使用总线方式连接就会降低电路工作速度和性能,因此,必须采用特殊的连接方法[5][6]。对于多CPU的SoC来说,其内部各CPU系统之间以及CPU与公共电路模块之间的通信连接形成了一种片内网络,属于片上网络系统(NoC)。
针对具有两个CPU系统的模数混合信号SoC设计要求" title="设计要求">设计要求,本文提出一种新的总线桥网络连接方法,通过总线桥,可以把两个CPU以及多个数字设备连接在一起。
1 双CPU混合电路的系统结构
在嵌入式微处理器中,目前一般使用总线桥实现多个电路模块与CPU相连接[ARM、IBM],这种总线的特点是能实现可变数据宽度,同时可以满足快速数据连接。但对于多CPU的SoC系统来说,这种总线无法实现CPU所要求的运行模式要求。在多CPU系统中,要求CPU之间实现无缝连接,同时对于公共电路也能实现无缝连接,即要求任何一个CPU都能把公共电路和其他的CPU作为其子系统的一部分,实现快速数据传输。图1是一个双CPU系统的数据流图结构。
在图1的数据流图中,CPU之间、CPU与公共电路之间的数据传输都经过总线桥实现,因此,总线桥实际上就是一个系统总线仲裁器。仲裁器与CPU通过简单的信号协议完成快速数据传输连接。
双CPU的模数混合信号SoC的基本结构如图2所示,系统中的数据字长为8bit。在这个系统中,具有CPU1和CPU2 两个完全独立的8位CPU系统。要求所设计的SoC提供一个ADC电路和一个DAC电路,这两个电路可以被任何一个CPU所控制。同时,系统还要提供一个公共的32KB RAM,可以被两个CPU中的任何一个所访问。注意,这个系统中把ADC和DAC所连接的模拟电路设计在SoC之外。
与图1相对照,图2中的ADC和DAC以及RAM就是图1中的公共电路。
在图2所示的SoC结构中,两个CPU均为一个独立CPU系统,能够完全独立工作。在任何一个CPU系统中,CPU称为本地CPU,每个CPU系统均包含有相应的总线、逻辑电路、存储器和I/O接口等,所有这些电路仅供本地CPU使用。
2 总线桥结构设计
根据图2的结构可知,所需要的SoC中需要实现8bit的数据传输。在设计中考虑如下要求:
(1)任何一个CPU系统均为一个独立工作的8bit系统。
(2)任何一个CPU系统均可随时使用RAM、ADC和DAC电路,对于RAM的等待时间不大于2us,对于ADC和DAC电路的等待时间不大于120us。
(3)RAM、ADC和DAC电路全部在CPU系统控制下工作,不主动向两个CPU系统发送信号或数据。
(4)ADC的模拟输入信号带宽小于2kHz,转换速度为100μs。
(5)DAC输出数据速度低于4000点/s,转换速度为1μs。
根据以上设计要求可知,必须使用一个总线桥把两个CPU系统和RAM、ADC及DAC电路连接起来。
为了满足设计要求,总线桥必须为每一个电路提供一个单独的通道,每个通道需要设置一个开关来控制CPU系统的连接。
总线桥的具体设计要求如下:
(1)具有电路使用判别功能,即能够判别哪一个CPU系统提出的电路使用要求。
(2)为了满足速度要求,应向每个CPU都提供相应的电路部件工作状态信息,以保证CPU系统能正确、快速地完成数据传输。
(3)总线桥对电路通道的选择使用硬件逻辑电路来完成。
(4)如果两个CPU系统需要写入或独处数据中相互碰撞,则应当有一个CPU具有优先权。
(5)如果两个CPU系统使用不同的电路,则应当能够同时使用。例如CPU1向RAM写入或读出数据,CPU2从ADC读取数据,这时必须能够同时工作。
(6)对于CPU系统来说,对RAM、ADC和DAC电路的读写操作类似于I/O口操作。
(7)暂不考虑CPU之间的数据传输。
3 总线桥设计与实现
根据以上讨论,本文设计了一个完整的8bit双CPU系统的总线桥系统。
3.1 总线桥控制原理
总线桥的功能是对各通道进行连接控制,并向CPU提供相应的设备状态信号。本文设计的总线桥控制器的功能是对各通道进行开关控制,在控制器的控制下建立CPU与RAM、ADC和DAC之间的直接连接。
为了保证多CPU系统能够正常工作,并尽可能保证对其他功能电路的并行操作,总线桥的功能应用是把CPU1、CPU2和RAM、ADC及DAC连接在一起,提供一个主动电路之间、主动电路与非主动电路之间的连接通道,每一个部件具有一个独立的连接通道。
由此可知,控制器需要能够接收CPU提供的设备使用信息和设备状态信息,具体要求如下:
每个CPU都需要为总线桥提供设备选择信号,为此每个CPU设计两根信号线:cd11cd12代表CPU1发送给控制器的设备选择信号线,通过这两个信号,控制器将CPU1发送来的数据传送到相应的公共设备中;cd21cd22代表CPU2发送给控制器的设备选择信号线,通过这两个信号,控制器将CPU2发送来的数据传送到相应的公共设备中。除此之外,总线桥还需为每个CPU提供设备空闲状态情况,为此需要一根设备空闲状态信号线ack1ack2,表示控制器返回给CPU1CPU2的设备空闲状态信号,由ack1ack2的高低电平决定是否让CPU1CPU2访问设备。通过cdack这两个控制信号,可以很好地起到通道选择的作用。
3.2 控制器逻辑结构设计
对于本系统而言,总线桥的内部逻辑设计是系统设计的关键;对于总线桥而言,必须做到正确接收数据,并将数据正确传送给CPU要传送的公共设备,起到正确通道的作用,这就需要设置公共设备选择信号,即cd1、cd2。根据cd1、cd2信号的不同,总线桥选择不同的设备,以CPU1的两个信号线cd11、cd12为例,其真值表如表1所示。
当cd11、cd12为00时,代表CPU1要将数据送到设备RAM,总线桥接收到cd11、cd12传过来的00信号,就会将CPU1的送来的8位数据送入RAM中;当cd11、cd12为01时,代表CPU1要将数据送到设备DAC中,总线桥接收到cd11、cd12传过来的01信号,就会将CPU1的8根数据线和DAC的8根数据线相连,将数据送入DAC中;同样,当cd11、cd12为10时,数据将会被送入设备ADC中;当cd11、cd12为11时,代表单片机CPU不访问任何外设。这样设置就可以保证总线桥将数据送入正确的公共设备中。
但是仅仅只有信号线还是不够的。为了避免两个CPU发生访问冲突,还需要设置一个握手信号,由总线桥发送给CPU以确定外设是否繁忙,能否访问。为此,每一个CPU1和CPU2分别设置一个握手信号ack1和ack2来控制CPU访问设备。当ack为低电平时表示允许访问设备;反之,则表示不允许。
为了实现系统的正常通信,人为规定两个CPU不允许同时访问同一个设备。CPU1的优先级最高,当两个CPU同时访问相同的设备时,CPU1优先访问,但是如果CPU2先开始访问某一个设备时,为了防止数据因为中断而丢失,即使CPU1此时要访问,也是不被允许的。但是两个CPU允许同时访问不同的设备,并不互相干扰。总线桥内部结构真值表如表2。
表2中,cd11/cd12、cd21/cd22为总线桥的输入控制线,ack1/ack2/acka1/acka2/ackd1/ackd2/ackr1/ackr2为总线桥的输出控制线,真值表分为三种情况:(1)当cd11/cd12、cd21/cd22信号相同时,代表两个CPU要同时访问相同的设备,此时CPU1优先级最高。(2)当cd11/cd12,cd21/cd22信号不同时,代表CPU访问的设备不同,此时总线桥允许两个CPU同时访问。(3)当cd11/cd12、cd21/cd22都为11时,表示两个CPU都为空闲状态。
需要强调的是,当一个CPU访问完公共设备后,需要告知总线桥访问结束,可以让其他CPU开始访问此设备。
3.3 设备连接接口设计
为了建立控制器的逻辑结构,还必须确定每一个设备接口的控制信号、地址信号和数据信号。
(1)总线桥与CPU的接口
以CPU1为例,输入输出信号主要设计为:(1)八位数据的双向传输cpu1db0~cpu7db7;(2)13位地址线cpu1adr0~13;(3)发送读信号、写信号cpu1wr、 cpu1rd;(4)接收CPU发送的公共设备选择信号cd11、cd12;(5)发送允许访问公共设备信号ack1。
(2)总线桥与ADC接口
总线桥与AD的连接输入输出信号主要设计为:(1)接收通道选择信号addr0~addr2;(2)发送AD启动信号adstart;(3)接收转换完成信号adeoc;(4)接收转换完成的八位数据addb0~addb7。
(3)总线桥与DAC接口
DAC通道与总线桥的连接输入输出信号,主要设计为:(1)发送使能信号dacs;(2)发送八位数据dadb0~dadb7。
(4)总线桥与RAM接口
总线桥与RAM的连接输入输出信号主要设计为:(1)发送13位地址信息ramadr0~ramadr12;(2)发送使能信号ramcs1,ramcs2;(3)八位数据双向传输ramdb0~ramdb7。
根据上述总线桥的逻辑结构以及接口信号,与CPU1、CPU2和RAM、ADC及DAC构成完整的系统。具体设备连接接口如图3所示。
3.4 仿真分析结果
为了验证系统,对程序在quartusII中进行了仿真,结果表明总线桥能够正确调配CPU访问设备,避免冲突,并且能够将数据成功送到CPU选择的设备中。
图4中,在最初的两个时钟周期内,CPU1和CPU2都为空闲状态,而后cd1变为为00,cd2也变为00,代表CPU1和CPU2要同时访问公共设备RAM,可以看出此时ack1变为低电平,即首先允许CPU1优先访问,ack2仍然为高电平,即CPU2等待,当CPU1结束访问时,才允许CPU2开始访问。图5中,cd2先变为00,代表CPU2先开始访问RAM,此时ack2为低电平,允许CPU2开始访问;当CPU2访问到一半的时候,cd1变为00,CPU1申请访问RAM,从图5中可以看到,此时,ack2一直保持低电平,亦即CPU2并没有被打断,还在继续进行数据传输,当CPU2结束访问,ack2变为高电平,ack1才变成低电平, CPU1被允许继续访问。
本文采用的这种新的总线桥网络连接方法,将两个CPU和多个公共设备连接在一起,实现了两个CPU通过数据桥与多个公共设备通信的功能。通过在quartusII中的仿真,验证了这种连接方法的可行性和正确性,此设计方法提高了电路工作的速度和性能。
参考文献
[1] MEHENDALE M.Challenges in the design of embedded real-time DSP SoCs.IEEE 17th VLSI Design,2004:507-511.
[2] LI S.Processor architecture design for operation information processing based on safety model of instruments.IEEE ICSP′,2004,3:2687-2690.
[3] LI ZheYing.A study on analog IP blocks for mixed-signal SoC.IEEE 5th ASICON,2003,1:564-567.
[4] LI ZheYing.SFG modeling for consistency checking of mixed-signal SoC.IEEE 6th ASICON,2005,2:1066-1070.
[5] FURBER S.Future trends in SoC interconnect.IEEE VLSITSA,2005:295-298.
[6] KHAN Z.A novel bus encoding scheme from energy and crosstalk efficiency perspective for AMBA based generic SoC systems.IEEE 18th VLSI Design,2005:751-756.