当前位置:首页 > 单片机 > 单片机
[导读] 在现今SOC设计中,当周边装置(Peripheral IP)想要和中央处理器(CPU)沟通时,最常使用的机制是透过中断(Interrupt)。周边装置可触发中断给中央处理器,当中央处理器接收到中断后,则可判断是由那个周边装置触发些中

 在现今SOC设计中,当周边装置(Peripheral IP)想要和中央处理器(CPU)沟通时,最常使用的机制是透过中断(Interrupt)。周边装置可触发中断给中央处理器,当中央处理器接收到中断后,则可判断是由那个周边装置触发些中断,接着处理相对应的中断处理程序(ISR,Interrupt Service Routine),藉此达到彼此沟通的目的。

而AndesCore™在中断处理方面,共支持两种模式:内部中断处理器(IVIC Mode,Internal Vector Interrupt Controller)和外部中断处理器(EVIC Mode,External Vector Interrupt Controller)。其中最大的差异性,即是中断控制器所存在的位置。在内部中断处理模式下,AndesCore™本身即设置了一个中断控制器存在于CPU内部,经由此中断控制器来处理相关中断的工作。而在外部中断处理模式下,用户必须在CPU外部实做一个中断控制器来处理相关中断工作。

除了上述的差异性之外,在硬件方面的整合和软件方面的应用,也存在些许差异性。本文之目的除了介绍这些差异性外,也提供一个简单的设计平台供使用者参考。期望能对使用者有所帮助,也希望读者不吝指教提供您宝贵的意见。

1. 中断处理模式介绍

AndesCore™共支持两种中断处理模式:内部中断处理器(IVIC Mode,Internal Vector Interrupt Controller)和外部中断处理器(EVIC Mode,External Vector Interrupt Controller)。以下的介绍将架构于AndesCore™ N968A-S这颗中央处理器。带领使用者循序渐进地,了解这两种中断处理模式的差异。

1.1 Definition

AndesCore™ N968A-S支持两种中断处理模式,首先,我们先介绍关于这两种模式的定义。

1.1.1 IVIC Mode

AndesCore™ N968A-S内部设计了一个中断控制器,所支持的中断来源数目可透过配置来决定。目前最大可支持16个中断来源,但可扩充至32个。请参考图表 1。若使用这存在于CPU内部的中断控制器来处理相关中断工作时,则为IVIC模式。假若SOC的中断来源大于32个时,使用者还是可以使用IVIC模式,但是需要将多个中断来源合为一个中断讯号线(ex: OR function),且中断处理程序(ISR)在该中断讯号线触发时,需要去判断是由那个中断来源所触发。在N968A-S的IVIC mode之下,每个中断来源可以选定值为0~3的优先权 (priority). 优先权高的中断来源可以打断优先权低的中断来源。

1.1.2 EVIC Mode

假若IVIC模式不符合用户所设计的系统,用户就需要选用EVIC模式。在此模式下,用户需要额外设计一个中断控制器,用来处理周边装置和中央处理器之间相关中断的工作,作为两者间沟通的桥梁。

 

图表 1. AndesCore™ N968A-S 所支持中断来源数目

1.1.1 Interruption Vector Entry Points

为了加速中断处理的时间,AndesCore™ N968A-S内部实做了一个Interruption Vector Table。将不同的中断事件分别对应到不同的Vector Entry,当中断发生时,CPU即可判断中断是由那个周边装置所触发,并跳到该中断所对应的Vector Entry,进而执行相关的中断处理程序(ISR)。

在前面章节有介绍AndesCore™ N968A-S支持两种不同的中断处理模式。因此,在不同的中断处理模式下,也对应了不同的Interruption Vector Table。

1.1.1.1 Interruption Vector Table of IVIC Mode

在IVIC模式下,所支持的中断来源可由用户来配置,支持的数目由2个到32个。Interruption Vector Table相关信息如下:

l 41 entry points (9 exceptions + 32 interrupts)

l Address = IVB.IVBASE + (entry number) * IVB.ESZ

(VEP: Vector Entry Point)

 

图表2. Interruption Vector Table of IVIC Mode

1.1.1.1 Interruption Vector Table of EVIC Mode

在EVIC模式下,所支持的中断来源数目可达到64个中断。Interruption Vector Table相关信息如下:

l 73 entry points (9 exceptions + 64 interrupts)

l Address = IVB.IVBASE + (entry number) * IVB.ESZ

 

图表3. Interruption Vector Table of EVIC Mode

1.2 Signal Descriptions

AndesCore™ N968A-S 提供相关中断讯号线,使得CPU可与周边装置或是外部中断控制器沟通。在EVIC模式下,除了中断来源讯号线之外,还包含了和外部中断控制器相互沟通的讯号线,详细讯号线叙述如下:

 

其中,evic_ireqval和evic_ireqack这两个讯号线用来和外部中断控制器沟通。在IVIC模式下,周边装置的中断讯号可和int_req[N:0]直接整合。当周边装置触发中断时,相对应的int_req讯号会拉起,告知CPU该周边装置触发了中断,CPU即会跳到所对应的Vector Entry来执行相关的中断处理程序。

而在EVIC模式下,外部中断控制器会负责处理周边装置的中断讯号。当周边装置触发中断时,外部中断处理器会负责和周边装置沟通,并将相对应的中断讯号(int_req)和中断需求讯号(evic_ireqval)发给CPU,当CPU接收到中断时,会将中断接收讯号(evic_ireqack)拉起,告知外部中断处理器收到中断,并去处理相关中断处理程序。

相关处理程序可参考图表 5。在ARC a时,当ireqack讯号为low时,CPU可等待周边装置触发中断。当周边装置触发中断,外部中断控制器将相对应中断讯号int_req和ireqval拉起,告知CPU有中断发生。在ARC b时,当CPU收到中断,则将ireqack讯号拉起,告知外部中断控制器已收到中断。在ARC c时,外部中断控制器将ireqval讯号拉下,并等待CPU将ireqack讯号拉下(在ARC d时),表示CPU可接收新的中断触发。

 

1.3 System Register Setting

关于上述两种中断模式的选择,用户可透过设定AndesCore™ N968A-S内部的一个system register来达到目的。

该system register为Interruption Vector Base Register(ir3)。其中的第13个bit决定不同的中断模式。其格式如下:

 

2. Reference Design Architecture

在介绍完中断处理模式相关定义之后,本章节提供在实际整合与应用上的范例,让用户可更了解在不同中断处理模式下的差异。

2.1 主要架构

本次所实作的Reference Design主要是架构在Andes mini-platform上,搭配AndesCore™ N968A-S为主要CPU来控制相关周边装置。其主要架构如下图:

 

将AndesCore™ N968A-S整合在AHB-Lite Bus上,藉由APB Bridge和APB Bus沟通,而相关的周边装置则整合在APB Bus上。在本次范例中,主要会用到GPIO和INTC(中断控制器)这两个周边装置,在不同的中断模式下,利用GPIO来触发中断,再透过INTC与CPU沟通,观察不同中断模式下中断的处理方式。

2.1.1 Design Scenario in IVIC

在IVIC模式下,由GPIO触发中断(gpio_int signal),直接将中断传递给CPU(int_req signal)。当CPU接收到中断时,即可去处理相关的中断处理程序。相关装置之间的整合如下图所示:

 

2.1.2 Design Scenario in EVIC

在EVIC模式下,由GPIO触发中断(gpio_int signal),INTC收到中断后,会将中断讯号和相关沟通讯号传递给CPU(int_req signal & evic_ireqval signal)。当CPU接收到中断时,会将响应讯号拉起(evic_ireqack signal),告知INTC收到该中断,并去处理相关的中断处理程序。相关装置之间的整合如下图所示:

 

2.2 Example Code

以下将Reference Design中,就本次中断处理模式相关的整合程序部分和测试程序部分,摘要出来说明。

2.2.1 整合程序部分

在系统整合部分,包含AndesCore™ N968A-S和INTC在不同的模式下,整合相关的讯号线,其中透过EVIC_MODE参数来进行不同模式间的切换。

AndesCore™ N968A-S相关RTL片断:

evic_ireqval讯号在EVIC模式下由INTC触发给CPU,在IVIC下可直接给予0值。int_req由INTC或中断来源传递给CPU,告知CPU中断产生。evic_ireqack在EVIC模式下由CPU触发给INTC,告知INTC收到中断。

n9_core n9_core (

...

`ifdef EVIC_MODE

.evic_ireqval (evic_ireqval),

`else

.evic_ireqval (1'b0),

`endif

.int_req (int_req),

.evic_ireqack (evic_ireqack),

...

INTC相关RTL片断:

此中断控制器可透过evic_mode这个输入讯号,来决定该装置是处于IVIC模式或是EVIC模式,因此,在EVIC模式下,给予1值,设定为EVIC模式,在IVIC下,给予0值,设定为IVIC模式。ireqack讯号在EVIC模式下由CPU触发给INTC,告知INTC已收到中断,在IVIC模式下则给予0值。

ncore_intctl intctl (

.PCLK (pclk),

.PRSTn (preset_n&~wd_rst),

`ifdef EVIC_MODE

.evic_mode (1'b1),

.ireqack (evic_ireqack),

`else

.evic_mode (1'b0),

.ireqack (1'b0),

`endif

.int_req (int_req),

.ireqval (evic_ireqval),

...

2.2.2 测试程序部分

在测试验证部分,包含AndesCore™ N968A-S在不同中断模式下的设置、INTC相关中断状态的设置和GPIO触发中断的设置。

AndesCore™ N968A-S相关程序片断:

AndesCore™ N968A-S支持两种中断处理模式,透过CPU内部的system register来设置。主要为设置Interruption Vector Base Register,该register的第13个bit用来定义CPU处在何种中断处理模式。在EVIC模式下,需将该bit设置为1,在IVIC模式下,则将该bit设置为0。

!---------------!

!--- Set $IVB ---!

!---------------!

! [31:16] (IVBASE) = 16'$h0

! [15:14] (ESZ) = 2'b00 (4 bytes)

! [13] (EVIC) = 1'b0 (IVIC mode)

mfsr $r0, $IVB !read $IVB

ori $r0, $r0, #0x2000 !enable EVIC

mtsr $r0, $IVB !write $IVB

INTC相关程序片断:

INTC通常支持不同的中断触发方式,包含Interrupt Masking、Interrupt Trigger Mode、Interrupt Trigger Level …等。在开始使用每个中断来源之前,这些控制选项都必须在INTC上设定正确。

3. 模拟结果

将上述的Reference Design整合完成后,搭配测试程序进行仿真,并藉由波形图来观察不同中断模式下,相关中断讯号线的变化。

3.1 IVIC模拟结果

在IVIC仿真环境中,主要测试程序如下:

l 由GPIO触发一中断,并将中断传递给CPU

l CPU接收到中断后,执行相对应的中断处理程序

仿真结果如图表11所示,当GPIO触发中断后,将中断直接传递给CPU,在CPU端的int_req讯号线会触发,表示有中断发生。当CPU收到中断讯号后,接着会处理相对应的中断处理程序。

 

3.2 EVIC模拟结果

在EVIC仿真环境中,主要测试程序如下:

l 由GPIO触发一中断

l 此时INTC设罝为EVIC模式,并将中断讯号和相关沟通讯号传递给CPU

l CPU接收到中断后,会将响应讯号拉起,告知INTC收到该中断,并执行相对应的中断处理程序

仿真结果如图表12所示,当GPIO触发中断后,INTC将中断和相关沟通讯号(ireqval)传递给CPU,在CPU端的int_req讯号线和evic_ireqval讯号线会触发,表示有中断发生。当CPU收到中断讯号后,会将evic_ireqack讯号线拉起,告知INTC收到中断。仿真结果如同章节1.2和图表5所论述。

 

结语

在AndesCore™ N968A-S 所提供的两种中断模式里,其中的IVIC模式使用CPU内的中断控制器来处理中断,此模式对用户来说,只要将中断来源和CPU端的中断讯号连接即可,相当容易整合。若用户所设计的系统里,中断来源数目超过IVIC模式所支持,或者系统需要更复杂的优先权选择时,则可选用EVIC模式。在EVIC模式下,用户需额外设计外部中断控制器,并整合相关沟通讯号。因此,用户可根据本身系统的复杂度和整合的难易度,来选择适合的中断处理模式。

 

 

 

 

 

 

 

 

 

 

 

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

5月11日消息,Arrow Lake、Lunar Lake还没有发布,Intel再下一代处理器Panther Lake的消息就传出来了,CPU方面没啥惊喜,GPU又一次要飞跃。

关键字: GPU CPU 芯片

Optiver通过包括EPYC CPU、Solarflare以太网适配器、Virtex FPGA和Alveo加速卡在内的高性能AMD解决方案搭建其业务基础

关键字: CPU 数据中心 以太网

利用LogiCoA™微控制器,以更低功耗实现与全数字控制电源同等的功能

关键字: 微控制器 电源 CPU

2024年4月18日 – 提供超丰富半导体和电子元器件™的业界知名新品引入 (NPI) 代理商贸泽电子 (Mouser Electronics) 很荣幸地宣布与Edge Impulse建立新的全球合作关系。Edge Im...

关键字: 机器学习 MCU CPU

无论您是在研究如何使用 10GigE 还是寻求所需考虑事项的建议,本文均提供有实践,帮助确保单相机 10GigE 视觉系统设置顺利并拥有良好性能。 我们列出了主机系统配置、布线和相机设置的实践。

关键字: 视觉系统 CPU 存储器

Apr. 16, 2024 ---- NVIDIA新一代平台Blackwell,包含B系列GPU及整合NVIDIA自家Grace Arm CPU的GB200等。TrendForce集邦咨询指出,GB200的前一代为GH2...

关键字: CPU GPU

人工智能是集合众多方向的综合性学科,在诸多应用领域均取得了显著成果[1]。随着航空领域人工智能技术研究的不断深入,面向开放式机载智能交互场景,人工智能的应用可解决诸多问题。例如智能感知、辅助决策等,可利用人工智能算法对多...

关键字: 人工智能 PCIe CPU

CPU针脚弯了,用工具调正就不会有影响。开机自检也通过,CPU 再出问题就不是针脚引起的问题。针脚只要不断就没有问题,有的CPU出厂的时候针脚就有点弯,这并不是什么大问题,只要用镊子轻轻地弄直就可以了。

关键字: CPU 针脚 开机自检

瑞典乌普萨拉,2024年3月27日 – 全球领先的嵌入式系统开发软件解决方案供应商IAR自豪地宣布:公司备受全球数百万开发者青睐的开发环境再次升级,已率先支持瑞萨首款通用32位RISC-V MCU,该 MCU 搭载了瑞萨...

关键字: MCU RISC-V CPU

联发科与高通骁龙的对决可以说是一场性能与价值的较量,那么,你对两者的芯片有了解吗?在移动设备领域,芯片制造商的竞争愈发激烈。其中,来自台湾的联发科(MediaTek)与美国的高通(Qualcomm)无疑是该领域的两大巨头...

关键字: 联发科 高通骁龙 CPU 处理器
关闭
关闭