通俗来理解 ARM芯片内核,架构,指令集,软核和硬核之间的关系

本文详细介绍了单片机的概念及其与个人电脑组件的区别,深入解析了ARM芯片及ARM内核的不同系列,如ARM7、ARM9、ARM11、CORTEX等,并解释了架构与指令集的关系,以及IP核的软核和硬核区别。

1、单片微型计算机:

简称单片机,简单来说就是集CPU(运算、控制)、RAM(数据存储-内存)、ROM(程序存储)、输入输出设备(串口、并口等)和中断系统处于同一芯片的器件,在我们自己的个人电脑中,CPU、RAM、ROM、I/O这些都是单独的芯片,然后这些芯片被安装在一个主板上,这样就构成了我们的PC主板,进而组装成电脑,而单片机只是将这所有的集中在了一个芯片上而已。

2、什么是ARM芯片?

凡是采用ARM内核的芯片(或者凡是采用ARM内核的CPU)都是ARM芯片

3、什么是ARM内核?

所谓内核,就是CPU里面实现运算的核心,我们也可以将内核称之为CPU(注意,该CPU是真正意义上的CPU,因为它实现了数据的运算与处理)。所说的单片机和芯片相当于一个CPU只是指宏观意义上的CPUARM内核只是一个统称,它有以下几个系列:ARM7,ARM9,ARM11,CORTEX等几个内核家族,每个内核家族都有不同的内核种类,比如CORTEX内核家族就有:Cortex-A8内核、Cortex-A9内核、Cortex-R4内核、Cortex-M0内核、Cortex-M1、Cortex-M3、Cortex-M4内核等,目前使用最广的STM32系列芯片使用的就是Cortex-M3内核。

4、什么是架构?

片面上讲,我们可以将架构理解为内核所使用的指令集。例如:用于高端的(手机等)Cortex-A8,Cortex-A9等内核用的是ARMv7-A架构,或者说用的是ARMv7-A指令集架构,我们常用到的STM32的Cortex-M3内核用到的是ARMv7-M架构。

5、什么是指令集?

所谓指令集就是一整套底层指令的统称。分为RISC(简单指令集)和CISC(复杂指令集)

6、理解内核关系

M4内核是Arm公司开发的一个IP核,相当于毛胚房,其他公司买核的图纸之后,可以在这个框架已定(m4)前提下加上自己的电路形成各自的芯片(32f4)。就比如你把它建成住宅楼还是酒店、写字楼随你。ST公司生产的STM32是就是基于Cortex-M3这个核生产的CPU。(理解内核关系)

7、IP核分软核和硬核?

现在貌似也有软硬结合的核…它是什么东西呢?比如ARM指令授权,它就是软核,它只规定了CPU的指令集,好比建桥,它只告诉你桥应该建多长、多宽、大概长什么样,但是具体细节没有,不告诉你电路在芯片上怎么摆放,怎么连线。软核的好处是给了很大的发挥空间,模仿、抄袭也简单,以后做类似东西可以参考。硬核就是它只告诉你电路在芯片上具体长什么样子,把它摆上去用就行了。硬核的好处是它一般都是经过其它芯片验证的,很容易了解它的具体性能。但你几乎不可能修改它,也很难了解它的实现细节,毕竟有几千万个mos管,人怎么分析。

FPGA硬核联动可以通过以下几种常见方法实现: #### 共享总线通信 硬核可以连接到同一条总线上,通过总线进行数据传输通信。例如,在一些FPGA设计中,采用AMBA(Advanced Microcontroller Bus Architecture)总线协议,硬核都可以挂载到该总线上,可以通过总线向硬核发送控制命令,硬核也可以将处理结果通过总线反馈给。这种方式类似于计算机中各个组件通过系统总线进行通信,实现了硬核之间的数据交互。 #### 直接信号连接 对于一些简单的交互需求,可以通过直接的信号连接来实现硬核的联动。将的输出信号直接连接到硬核的输入信号,或者反之。比如,产生一个使能信号,直接连接到硬核的使能端,控制硬核的工作状态。这种方式简单直接,适用于对实时性要求较高且交互数据量较小的场景。 #### 内存映射通信 在FPGA中,可以为硬核分配不同的内存地址空间,通过内存映射的方式进行数据交换。可以向特定的内存地址写入数据,硬核从该地址读取数据;反之亦然。例如,将配置参数写入到指定的内存地址,硬核在启动时从该地址读取配置信息,从而实现硬核的配置。以下是一个简单的Verilog代码示例,模拟内存映射通信: ```verilog module memory_mapped_communication ( input wire clk, input wire [7:0] softcore_data, // 写入的数据 input wire softcore_write_en, // 写使能信号 output reg [7:0] hardcore_data // 硬核读取的数据 ); reg [7:0] shared_memory; // 共享内存 always @(posedge clk) begin if (softcore_write_en) begin shared_memory <= softcore_data; // 写入数据到共享内存 end hardcore_data <= shared_memory; // 硬核从共享内存读取数据 end endmodule ``` #### 中断机制 硬核可以通过中断信号进行交互。当硬核完成某项任务或者出现异常情况时,向发送中断信号,接收到中断信号后,暂停当前的工作,处理硬核的请求。这种方式可以提高系统的响应速度处理效率,适用于需要及时处理硬核事件的场景。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值