发明内容
本发明提出了一种C*Core微处理器应用AMBA总线的设计方法,其目的是要将一种具有CLB总线接口的C*Core微处理器应用于具有AMBA总线架构的系统中,使C*Core微处理器得到更广泛的应用。
为达到上述目的,本发明采用的技术方案是:一种C*Core微处理器应用AMBA总线的设计方法,基于AMBA总线结构,以具有CLB总线接口的单/双个C*Core微处理器作为总线控制单元,通过设置CLB总线到AMBA总线的桥接器单元将C*Core微处理器应用到AMBA总线中;所述桥接器单元对应单个C*Core微处理器时由以下两个桥接器中的任意一个构成,对应双个C*Core微处理器时,由以下两个桥接器构成,其中,第一桥接器为CLB总线到AMBA的AHB总线的桥接器,第二桥接器为CLB总线到AMBA的APB总线的桥接器,第一桥接器将C*Core微处理器挂接到AMBA的AHB总线系统中,第二桥接器将C*Core微处理器挂接到AMBA的APB总线系统中;在AMBA总线结构中,从AHB总线到APB总线设有AHB2APB总线桥接器,当AHB2APB总线桥接器和第二桥接器同时存在时,设置一个对APB总线访问的多路选择器,用于支持AHB2APB总线桥接器和C*Core微处理器对APB总线的二选一访问;
所述第一桥接器中包含一组状态机,用于确定CLB总线到AMBA的AHB总线之间的相应状态,完成状态之间的跳转,其一组状态机包括:
(1)、总线异常状态机,用来处理CLB总线系统的不正常传输模式;
(2)、总线空闲状态机,用来确定总线的传输类型;
(3)、总线忙状态机,用来判断总线的忙碌状况;
(4)、总线仲裁状态机,用来判断AMBA的AHB总线的控制权,根据总线的控制权来决定总线的操作;
(5)、总线分离传输状态机,用来处理AMBA的AHB总线所具有的SPLIT传输类型;
(6)、总线异常中止状态机,用来处理CLB总线系统遇到异常的情况;所述第二桥接器中包含:
(1)、传输控制逻辑,用来存储相关的CLB总线的地址和其他的总线信号,并且根据不同宽度的传输转换数据;
(2)、模块选择逻辑,用来根据地址给出相应的选择信号;
(3)、APB状态机,包括空闲(IDLE)、建立(SETUP)、使能(ENABLE)三个状态,地址和其他转换过的控制信号在APB状态机逻辑的控制下传输到AMBA的APB总线。
上述技术方案中的有关内容解释如下:
1、上述方案中,“AMBA”为先进微控制器总线体系结构;“AHB”为先进高性能总线;“APB”为先进外设总线;CLB(C*Core Local Bus)为C*Bus体系结构中的高性能系统总线。
2、上述方案中,所述C*Core微处理器是采用CLB总线结构而设计的,具有CLB总线接口形式,为了使C*Core微处理器能够兼容国际上比较成熟的AMBA总线,实现更广泛的应用,在AMBA总线结构中设置CLB总线到AMBA总线的桥接器单元。关于C*Core微处理器与第一桥接器和第二桥接器的关系有以下三种情况:
(1)、采用单C*Core微处理器作为总线控制单元,用第一桥接器将C*Core微处理器挂接到AMBA的AHB总线系统中。
(2)、采用单C*Core微处理器作为总线控制单元,用第二桥接器将C*Core微处理器挂接到AMBA的APB总线系统中。
(3)、采用双C*Core微处理器作为总线控制单元,其中,用第一桥接器将一个C*Core微处理器挂接到AMBA的AHB总线系统中,用第二桥接器将另一个C*Core微处理器挂接到AMBA的APB总线系统中。
3、上述方案中,为了便于表示不同的状态,CLB到AMBA的AHB总线的第一桥接器中包含一组令牌。
4、上述方案中,CLB到AMBA的AHB总线的第一桥接器中包含一组信号转换表格,用于根据不同的令牌和信号实现总线接口之间的信号转换。
本发明的基本原理是:
如果要将具有CLB总线接口的C*Core微处理器,应用于基于AMBA总线架构的系统中,需要设计CLB总线与AMBA系统的接口,即设计桥接器,通过桥接器实现两种总线系统的互联,这样CLB总线接口的C*Core微处理器才可以方便的直接移植到AMBA总线系统中对系统进行控制和操作。而对于AMBA中的AHB和APB两种总线,设计人员可根据芯片系统的性能要求来灵活的选择第一桥接器和第二桥接器,将C*Core微处理器方便的挂接到不同的总线系统中,实现芯片不同的性能要求。
CLB总线到AMBA的AHB总线的第一桥接器的作用是将C*Core微处理器发出的传输转换为对AHB系统从设备的传输,因此该桥接器需要有对CLB和AHB两个接口。桥接器需要先接收CLB的总线地址和控制信号,然后发出相应的AHB总线的相应信号,并且根据AHB的返回握手信号,转换成CLB总线的握手信号。桥接器的设计要建立在对接口信号的分析,以及两者之间转换的要求的基础上,设计相应的转换表格,和状态机来实现桥接器的功能。
CLB总线到AMBA的APB总线的第二桥接器的作用是将C*Core微处理器发出的传输转换为对APB系统从设备的传输,因此该桥接器需要有对CLB和APB两个接口。桥接器需要先接收CLB的总线地址和控制信号,然后发出相应的APB总线的相应信号。桥接器的设计要建立在对接口信号的分析,以及两者之间转换的要求的基础上,设计相应的转换表格,和状态机来实现桥接器的功能。
由于上述技术方案运用,本发明与现有技术相比具有下列优点和效果:
1、本发明采用桥接器的方法,设计了两个桥接器,即第一桥接器(以下亦称为CLB2AHB桥接器)和第二桥接器(以下亦称为CLB2APB桥接器)分别对应AMBA总线的AHB总线和APB总线,提供了一种将C*Core系列微处理器应用于AMBA的方法。
2、本发明的两个桥接器方便了设计人员根据需要选择将C*Core微处理器应用于AMBA总线的AHB总线系统或者AMBA总线的APB总线系统。
3、本发明的CLB2AHB桥接器,采用了六个简单的状态机清楚地表明了总线系统转换可能碰到的情况,简化了设计及转换情况。
4、本发明的CLB2APB桥接器,采用了表格的方法对需要转换的信号进行描述,并且方便逻辑的转换,使得两个总线信号之间转换的时候能够遵循两个总线双周期的数据传输,而不需要额外的等待周期。
具体实施方式
下面结合附图及实施例对本发明作进一步描述:
实施例:
参见附图1所示,一种C310微处理器应用于AMBA总线结构的系统框图,基于AMBA总线结构,通过CLB2AHB桥接器和CLB2APB桥接器将C*Core微处理器作为一个总线控制单元应用于AMBA,第一个CLB2AHB桥接器应用于C*Core微处理器挂接到AHB总线系统,第二个CLB2APB桥接器应用于C*Core微处理器挂接到APB总线系统,两个桥接器可根据芯片的性能需要选择其一使用。也可采用双C*Core微处理器作为总线控制单元,其中,用第一个CLB2AHB桥接器将一个C*Core微处理器挂接到AMBA的AHB总线系统中,用第二个CLB2APB桥接器将另一个C*Core微处理器挂接到AMBA的APB总线系统中。
一、CLB2AHB桥接器的实现
设计实例:参见附图2所示,CLB2AHB桥接器的设计实现图,是建立在对接口信号的分析,以及两者之间转换的要求的基础上,由相应的转换表格,多路选择器,状态机和令牌组成,令牌用来表示状态机相应的状态以及扩展的状态,通过令牌和信号的变化情况由转换表格来完成信号的转换。
1、状态机,用于根据情况确定相应的状态,并完成状态之间的跳转,根据需要设计了下面六个状态机:
(1)、总线异常状态机(ab_normal state_machine),用来处理CLB总线系统的不正常传输模式。状态机ab_normal state_machine是针对AHB设备的HRESP信号所返回的信息设计的,当AHB设备由于特殊原因导致RETRY或者ERROR的响应时,CLB总线系统相应的应进入不正常的传输模式,状态机包含normal和abnormal两种状态。完整地描述如下:初始状态为normal,当AHB的接口信号满足((RETRY&~HREADY)|(ERROR&~HREADY))为真的条件时,状态机的状态发生转换,进入abnormal状态,而当AHB接口信号满足(OKAY&HREADY&HGRANT)为真的时候,状态机重新进入normal状态。
(2)、总线空闲状态机(idle state_machine),用来确定总线的传输类型。状态机idle state_machine的作用是根据AHB的HRESP信号来确定传输类型HTRANS的值,保证接下来的CLB总线传输可以正确进行。状态机具有两个状态,初始状态idle_normal,即正常传输状态和进行IDLE传输的状态idle_idle状态。完整描述:系统RESET过后,状态为idle_normal,当接口信号满足((RETRY&~HREADY)|(ERROR&~HREADY)|(SPLIT&~HREADY))为真的条件时,状态发生转移进入idle_idle状态,而后状态重新转移进入idle_normal状态。
(3)、总线忙状态机(busy state_machine),用来判断总线的忙碌状况。该状态机的作用是根据传输类型和AHB总线的返回信号HREADY,判断总线的传输是否BUSY,从而CLB总线做出相应的回应,也就是CLB总线的p_ta_b信号进行一定的变化。Busy状态机包含两个状态,normal_transfer和busy_transfer。完整描述是:状态机的输入信号为HTRANS和HREADY,状态机的初始状态为busy_transfer,通过判断HTRANS和HREADY的值来进行状态的转移,当HTRANS==BUSY和HREADY为高的条件不同时满足的时候,状态机的状态发生变化,从初始状态机入normal_transfer状态,如果前面的条件依然成立,则状态维持原状,而当HTRANS==BUSY和HREADY为高的条件同时成立的话,状态机的状态发生转移,转换为busy_transfer状态。当状态机在busy_transfer的时候,CLB总线的信号p_ta_b信号变化为“1”。
(4)、总线仲裁状态机(arbitration state_machine),用来判断AMBA的AHB总线的控制权,根据总线的控制权来决定总线的操作。状态机arbitrationstate_machine用来判断AHB总线的控制权,从而根据总线的控制权来决定总线的操作。该状态机有三个状态:拥有总线控制权、没有总线的控制权和仲裁状态。描述其状态转移情况:当RESET期间HGRANT信号为低的情况下,状态机进入not_own_bus的状态;当HGRANT&HREADY条件为真的时候,进入总线仲裁arbitration状态。在arbitration状态中,当HREADY位高的时候,状态发生转移,进入own_bus状态,这时传输将会正常地进行;在该状态下,如果当(~HGRANT)&HREADY为真的情况下,状态转移进入not_own_bus的状态。初始状态为own_bus的情况与此类似。
(5)、总线分离传输状态机(split state_machine),用来处理AMBA的AHB总线所具有的SPLIT传输类型。该状态机有no_split、split_split、split_transition三个状态,其中,no_split状态用来表示数据传输正常进行的状态;split_split状态用来表示传输被其他的主设备打断,桥接器的传输进入SPLIT传输;split_transition状态则是用来表示其他的主设备已经完成传输,总线传输要从SPLIT传输转换为正常的传输。完整的状态转移情况如下:当完成系统RESET后,状态机进入初始状态no_split状态,当(HGRANT&(~HREADY)&SPLIT)为真的条件成立时,标志着AHB系统发生了SPLIT传输,桥接器将失去总线控制权,进入等待过程,这时状态将会从no_split转换为split_split状态;当(HGRANT&HREADY)为真的条件成立时,说明SPLIT传输已经结束,状态机将会发生状态转移进入split_transition状态;在split_transition状态中,如果HREADY为高表明桥接器可以继续进行传输,因此状态转换为no_split。
(6)、总线异常中止状态机(abort state_machine),用来处理CLB总线系统遇到异常的情况。状态机abort state_machine是用来处理当CLB总线系统遇到异常情况的时候,CLB将放弃正在进行的传输,重新进行新的传输。它拥有not_abort和abort两种状态,其中not_abort状态用来表示传输正常进行没有abort的情况发生,而abort状态则表示传输被放弃不再执行。具体描述如下:当系统完成RESET后,状态机进入not_abort状态,当p_abort_b信号和HREADY信号同时为低的条件成立的时候,证明总线将放弃此次传输,状态将发生转换来处理这种情况;在abort状态里,当HREADY为高的时候状态转移,重新进入not_abort状态,正常进行下面的传输。
2、令牌,用于标识不同的状态,根据上面的状态机,设计了以下令牌:
(1)、Abnormal_state_token:该令牌用来表示总线异常状态机的状态处于abnormal状态,具体表达式为:abnormal_state_token=(normal_state==`ABNORMAL)。
(2)、Idle_state_token:该令牌用来表示总线空闲状态机的状态处于idle_idle状态,表达式为:idle_state_token=(idle_state==`IDLE_IDLE)。
(3)、Before_arbitration_state_token:该令牌用来表示总线仲裁状态机的下一个状态将会是arbitration状态,表达式为:before_arbitration_state_token=(next_arbitration_state ==`ARBITRATION)。
(4)、Before_arbitration_state_token1:该令牌是before_arbitration_state_token令牌和CLB总线信号~m_tscd_b的逻辑与,表达式为:before_arbitration_state_token1=(before_arbitration_state_token&~m_tscd-b)。
(5)、Split_state_token:该令牌用来表示总线分离传输状态机的状态处于split_split状态,表达式为:split_state_token=(spli_state=`SPLIT_SPLIT)。
(6)、Split_transition_state_token:该令牌用来表示总线分离传输状态机的状态处于split_transition状态,表达式为:split_transition_state_token=(split_state==`SPLIT_TRANSITION)。
(7)、Abort_state_token:该令牌用来表示总线异常中止状态机的状态处于abort状态,表达式为:abort_state_token=(abort_state==`ABORT)。
(8)、Arbitration_state_token:该令牌用来表示总线仲裁状态机的状态处于arbitration状态,表达式为:arbitration_state_token=(arbitration_state==`ARBITRATION)。
(9)、Arbitration_state_token1:该令牌是arbitration_state_token令牌和CLB总线信号~m_tscd_b的逻辑与,表达式为:arbitration_state_token1=(arbitration_state_token&~m_tsed_b)。
(10)、Busy_state_token:该令牌用来表示总线忙状态机的状态处于busytransfer状态,表达式为:busy_transfer_state_token=(busy_transfer_state=`BUSY_TRANSFER)。
3、桥接器信号转换表格,用于根据不同的令牌和信号实现总线接口之间的信号转换。下面描述重要信号的变换表格:
(1)、HREQx信号的转换表格
HREQx信号是AHB总线系统中的总线请求信号,该信号需要根据CLB总线中的p_lpmd信号进行转换,信号赋值见下表1:
表1 HREQx逻辑关系表
p_lpmd |
HREQx |
00(stop) |
0 |
01(wait) |
0 |
10(doze) |
0 |
11(normal) |
1 |
(2)、HSIZE信号的转换表格
HSIZE信号是AHB总线系统中描述传输过程中数据信号长度的信号,在CLB和AHB传输过程中,都可支持不同宽度的数据传输,字、半字、字节,该信号需要根据CLB总线系统的信号p_tsiz信号转换,信号赋值见下表2:
表2 HSIZE逻辑关系表
p_tsiz[1:0] |
HSIZE[2:0] |
00(word 32bit) |
010(32bit word) |
01(byte 8bit) |
000(8bit byte) |
10(halfword 16bit) |
001(16bit halfword) |
11(reserve) |
|
(3)、HPROT信号的转换表格
HPROT信号是用来描述传输的级别特性,每次传输可以是数据传输,可以是操作码传输,其性质决定了,它必须由CLB中的p_tc和p_ifetch信号来转换,信号赋值见下表3:
表3 HPROT逻辑关系表
{p_tc[2],p_ifetch} |
HPROT[3:0](not bufferable and not cacheable) |
00 |
0001(user data fetch) |
01 |
0000(user opcode access) |
10 |
0011(privileged data fetch) |
11 |
0010(privileged opcode access) |
(4)、HBURST信号的转换表格
HBURST信号描述突发传输类型,由inc_token转换,信号赋值见下表4:
表4 HBURST逻辑关系表
inc_token |
HBURST |
1 |
001(INC) |
0 |
000(single) |
(5)、HTRANS信号的转换表格
HTRANS信号用来标识AHB系统每次传输的类型,根据CLB信号的值和几个令牌来转换。该信号是AHB系统中重要的信号,它指明每次传输的类型。要决定AHB系统的传输类型,不仅要根据CLB信号的值来判断,而且要根据前面的状态机的不同状态来决定。当p_early_abort_b有效的时候,HTRANS的类型应赋为BUSY;而当ide状态机中的idle_state_token有效的时候,HTRANS应该为IDLE;当p_treq_b为高的时候,HTRANS为BUSY;当状态机中的seq_token为高的时候HTRANS的值为SEQ;当seq_token无效,p_treq_b有效的时候,HTRANS为NONSEQ。信号赋值见下表5:
表5 HTRANS逻辑关系表
p_early_abort_b |
idle_state_token |
p_treq_b |
seq_token |
HTRANS |
0 |
x |
x |
x |
01(BUSY) |
1 |
1 |
x |
x |
00(IDLE) |
1 |
0 |
1 |
x |
01(BUSY) |
1 |
0 |
0 |
1 |
11(SEQ) |
1 |
0 |
0 |
0 |
10(NONSEQ) |
表中x表示0或1均可
(6)、p_ta_b和p_tea_b信号的转换表格
p_ta_b和p_tea_b这两个信号是CLB总线系统的握手信号,每次传输都要等它们状态正常的时候才能正常的结束和开始。分析得知,CLB总线端的p_abort_b信号,前面介绍的状态机的不同状态,AHB总线端的返回信号HREADY、HRESP,都将决定这两个信号的值。p_ta_b和p_tea_b这两个信号是根据CLB总线信号、AHB总线端的返回信号HREADY、HRESP以及各种令牌来转换,信号赋值见下表6:
表6 p_ta_b和p_tea_b逻辑关系表
p_abort_b |
busy_transfer_state_token |
abort_state_token |
abnormal_state_token |
split_state_token |
split_transition_state_token |
before_Arbitration_state_token1 |
Arbitration_state_token1 |
HREADY |
HRESP[1:0] |
p_ta_b |
p_tea_b |
0 |
x |
x |
x |
x |
x |
x |
x |
x |
xx |
1 |
0 |
1 |
1 |
x |
x |
x |
x |
x |
x |
x |
xx |
1 |
1 |
1 |
0 |
1 |
x |
x |
x |
x |
x |
x |
xx |
1 |
1 |
1 |
0 |
0 |
1 |
x |
x |
x |
x |
x |
xx |
1 |
1 |
1 |
0 |
0 |
0 |
1 |
x |
x |
x |
x |
xx |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
1 |
x |
x |
x |
xx |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
1 |
x |
x |
xx |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
x |
x |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
00(ok) |
0 |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
00(ok) |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
01(error) |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
01(error) |
1 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
10(retry) |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
10(retry) |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
11(split) |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
11(split) |
1 |
1 |
表中x表示0或1均可
简单描述本发明设计的转换表格:只要p_abort_b信号有效,不管其它的状态情况是什么,p_ta_b总为“1”即无效,p_tea_b总为“0”有效,即传输没有完成,并且发生错误;如果状态机busy_transfer_state_token有效的时候,总线状态为忙,此时p_ta_b无效,p_tea_b无效,即传输没有完成,没有发生错误;当abort_state_token、abnormal_state_token、split_state_token、split_transition_state_token、before_arbitration_state_token、arbitration_state_token令牌分别有效的时候,p_ta_b无效,p_tea_b无效;当以上状态机令牌均无效的时候,也就是最基本最常见的传输情况下,是根据HREADY和HRESP来确定p_ta_b和p_tea_b的值,HREADY代表完成状态,而HRESP代表错误情况。表格详细地给出了信号变化的情况,其中p_ta_b有效,而p_tea_b无效的情况,是最正常的数据传输的状态。
(7)、address_load_en信号的转换表格
address_load_en信号用来控制地址信号和传输控制信号的锁存,当address_load_en有效的时候,才进行地址和其他控制信号如p_tsiz、p_rw_b锁存,其他情况下p_addr不进行任何处理,然后锁存过的地址和未经处理的地址经过选择器mux的选择后赋给HADDR,完成地址信号的转换。地址需要锁存的情况比较复杂,需要由很多状态机的状态和信号共同决定,treq_neg_token、split_state_token、split_transition_state_token、abort_state_token、abnormal_state_token、arbitration_state_token1、ptea_b、p_early_abort_b、p_ta_b信号和令牌共同决定address_load_en的值。表7清楚地给出了address_load_en的变化情况:令牌按照优先级的高低从左到右排列,当左边的令牌有效的情况下,不光后面的令牌有效与否的情况,根据表格赋值address_load_en,从表格可以看出当所有令牌全都无效的时候,要根据p_tea_b、p_early_abort_b、p_ta_b三个信号的组合情况决定address_load_en的变化,当p_tea_b为低,即有错误发生的时候,address_load_en有效;当p_tea_b为高,即传输没有错误的时候,如果p_early_abort_b为低有效的时候,仅异常情况发生要放弃传输,此时address_load_en为低不进行地址锁存;当p_tea_b、p_early_abort_b无效的时候,根据p_ta_b即传输完成的情况来决定address_load_en的赋值,当p_ta_b为低有效的时候需要进行地址锁存address_load_en有效;当p_ta_b为高无效的时候则不需要进行地址锁存,此时address_load_en无效为“0”。转换情况见下表7:
表7 address_load_en逻辑关系表
treq_neg_token |
split_state_token |
split_transition_state_token |
abort_state_token |
Abnormal_staten_token |
Arbitration_state_token1 |
p_tea_b |
p_early_abort_b |
p_ta_b |
address_load_en |
1 |
x |
x |
x |
x |
x |
x |
x |
x |
1 |
0 |
1 |
x |
x |
x |
x |
x |
x |
x |
0 |
0 |
0 |
1 |
x |
x |
x |
x |
x |
x |
0 |
0 |
0 |
0 |
1 |
x |
x |
x |
x |
x |
0 |
0 |
0 |
0 |
0 |
1 |
x |
x |
x |
x |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
x |
x |
x |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
x |
x |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
x |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
0 |
表中x表示0或1均可
(8)、select_enable信号的转换表格
select_enable信号是第一桥接器内部的选择信号(是HADDR的选择信号),当该信号为低的时候,选择没有锁存过的地址即p_addr作为HADDR,而当信号为高的时候,选择锁存过的地址信号作为HADDR。该信号由一些状态机的状态idle_state_token、ab_normal_state_token、abort_state_token、split_transition_state_token、arbitration_state_token来共同控制。当idle_state_token有效的时候,不管其它的令牌的有效情况,信号seleet_enable都是低,即地址不需要锁存;按照从左到右优先级的情况,当abnormal_state_token有效的时候,需要锁存过的信号送到AHB端;同样abort_state_token、split_transition_state_token、arbitration_state_token1有效,而高于它们优先级得令牌无效的情况下,select_enbale则为高,即需要锁存过的信号送到AHB端作为地址信号。select_enable信号由几个令牌来转换,信号赋值见下表8:
表8 seleet_enable逻辑关系表
idle_state_token |
abnormal_state_token |
abort_state_token |
split_transition_state_token |
Arbitration_state_token1 |
select_enable |
1 |
x |
x |
x |
x |
0 |
0 |
1 |
x |
x |
x |
1 |
0 |
0 |
1 |
x |
x |
1 |
0 |
0 |
0 |
1 |
x |
1 |
0 |
0 |
0 |
0 |
1 |
1 |
表中x表示0或1均可
(9)、Inc_token令牌的转换表格
Inc_token令牌根据p_aseq_b信号来转换,也就是说地址根据上次传输连续增加的传输类型,来决定一个inc_token。这个令牌和其delay一个时钟周期的令牌delay_inc_token一起来决定后面提到的seq_token,从而决定上面提到的信号HTRANS的SEQ传输类型。当p_aseq_b有效也就是”0”的时候,inc_token令牌为“1”;而当p_aseq_b无效即为“1”的时候,inc_token令牌为“0”。信号赋值见下表9:
表9 inc_token逻辑关系表
p_aseq_b |
inc_token |
0 |
1 |
1 |
0 |
(10)、Seq_token令牌的转换表格
Seq_token令牌用来指示AHB总线上面将进行连续地址的传输,当inc_token和delay_inc_token全部为高的时候,表明将进行连续传输,此时seq_token就为“1”即为有效。而其他情况,seq_token将不会有效。其转换见下表10:
表10 seq_token逻辑关系表
inc_token |
delay_inc_token |
Seq_token |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
下面给出CLB2AHB桥接器基本的读写执行过程。
读传输:
在该传输中数据从AHB从设备经桥接器被传送到CLB主设备(C*Core处理器)中。CLB主设备要进行读传输的时候,发送CLB的传输信号,各个状态机根据条件转换自己的状态,然后根据令牌及内部控制信号来给出AHB端的信号。其中很重要的一个内部信号是address_load_en,上面已经知道,该信号是由许多令牌如arbitration_state_token1、abort_state_normal、abnormal_state_token等和p_ta_b、p_tea_b等CLB端的重要信号所决定的,只有该信号有效的时候,传输控制信号才会送到AHB端。
当该桥接器在C*Core的控制下开始工作后,p_treq_b信号拉低,就启动其内部的状态机,并在时钟的上跳沿采样地址和控制信号。当内部控制信号address_load_en有效的时候,把采样和通过上面的表格转换的传输地址、传输控制信号提供给AHB端,开始AHB端的传输。紧接着在下个传输开始的同时,上个传输的数据从CLB返回。后面的传输根据AHB端的返回信号HREADY和HRESP,参与状态机的运行,从而进行相应的表格转换和控制信号赋值。读传输能够在两个时钟周期内完成。图4给出了执行过程。
写传输:
在该传输中数据从CLB主设备(C*Core)经桥接器被传送到AHB从设备中。CLB主设备要进行写传输的时候,发送CLB的传输信号,各个状态机根据条件转换自己的状态,然后根据令牌及内部控制信号来给出AHB端的信号。同样内部信号address_load_en有效的时候,传输控制信号、传输地址和写数据才会送到AHB端。
当该桥接器在C*Core的控制下开始工作后,p_treq_b信号拉低,就启动其内部的状态机,并在时钟的上跳沿采样地址数据和控制信号。当内部控制信号address_load_en有效的时候,把采样和通过上面的表格转换的传输地址、传输控制信号和数据提供给AHB端,开始AHB端的传输。后面的传输根据AHB端的返回信号HREADY和HRESP,参与状态机的运行,从而进行相应的表格转换和控制信号赋值。
二、CLB2APB桥接器的实现
设计实例:参见附图5所示,CLB2APB桥接器的设计实现图,由一个APB状态机,同时加上地址译码选择模块和控制传输模块组成。
1、APB状态机:地址和其他转换过的控制信号将在APB状态机的控制下传输到APB总线。APB状态机包括空闲(IDLE)、建立(SETUP)、使能(ENABLE)三个状态,当总线被复位或者总线上没有传输的时候,状态机处于IDLE状态,当总线上面发生了一次针对某一个APB从设备的有效操作,桥接器将会进入SETUP该状态,在这个状态中PSELx信号被置起,该状态只维持一个周期,而后根据情况进入ENBALE状态或者IDLE状态。表11是根据APB状态机变化的相关信号的变化表格。
表11 APB状态机信号变化表
State |
PSEL |
PENABLE |
Addr_latch_en |
PWRITE |
p_ta_b |
IDLE |
0 |
0 |
1 |
X |
1 |
SETUP |
1 |
0 |
0 |
~p_rw_b |
1 |
ENABLE |
1 |
1 |
0 |
~p_rw_b |
0 |
2、传输控制逻辑:根据需要存储和产生相关的CLB总线的地址和其他的总线信号,并且根据不同宽度的传输转换数据。该逻辑中由一个数据选择器来实现CLB总线的总线数据到APB总线数据的传输,对于不同字节有不同的映射关系,如图6所示。
3、模块选择逻辑:根据地址给出相应的选择信号。模块选择逻辑用来产生具体从设备的选择信号,参见图7所示。在模块选择逻辑中有每一个从设备的基地址,当C*Core微处理器发起一次访问的时候,模块选择逻辑比较p_addr的LSB位(具体的LSB位是由系统集成进来的时候定义好的)和每一个从设备的基地址。只要他们相匹配,就说明有一个APB的访问发起了。Apb_select和apb_module_select信号是模块选择逻辑输出给APB状态机的。Apb_select信号将在APB访问开始的时候有效,而apb_module_select信号将会指出那一个从设备被选择。
上述实施例只为说明本发明的技术构思及特点,其目的在于让熟悉此项技术的人士能够了解本发明的内容并据以实施,并不能以此限制本发明的保护范围。凡根据本发明精神实质所作的等效变化或修饰,都应涵盖在本发明的保护范围之内。