【一】Qsys的软核知识记录

第三讲

1、 在quartus和Qsys中开发称为硬件开发,eclipse中开发为软件开发

2、关于dubug

image-20221105111748541

image-20221105112349544

image-20221105113321468

image-20221105114206362

一个地址放8个字节,

固件化程序

需要在Qsys中加入epcs_flash_controller的flash控制器。epcs实际上就是一个串行的flash

image-20221105140132371

如果添加的核(外设)为存储器类型的,就需要将data_master和instruction_master两个线连接起来,如果外设不是存储类型的只需要连接data_master

image-20221105140942140

image-20221106043541832

image-20221105141157115

出现这样的错误 Error: Qsys_system.nios2_gen2: Reset slave onchip_rom.s1 not connected to instruction_master.

image-20221105142216179

image-20221105142333009

复位地址:芯片一上电程序就开始执行的起始地址,

程序烧写:

首先呢先在quartus中将硬件框架部分sof烧入到fpga中,然后再eclipse中烧入软件部分代码。

image-20221106045007140

image-20221106045242393

如果修改了硬件部分,需要重新生成板级支持包:

image-20221106045422525

重新生成bsp后,对整个工程重新编译

image-20221106045623869

image-20221106045813719

image-20221106045859434

image-20221106050110402

点击ok之后会出现这样的错误:connected system ID hash not found on target at expected base address.

解决的方法:将ignore mismatched system ID和ignore mismatched system timestamp 勾上(因为没有分配systme id,选择忽略即可)

image-20221106050428226

image-20221106050834296

image-20221106050928557

image-20221106051341124

image-20221106051545864

第四讲

image-20221106052056136

image-20221106052358411

image-20221106052510213

image-20221106052519657

寄存器文件:寄存器文件时nios II处理器内部用于存放数据的一些小型存储区,可以用来暂时存放参与运算的数据和运算结果。包含32个通用寄存器(可以有多种用途,如暂存指令、数据和地址)、32个控制寄存器(控制和确定nioss II 处理器的操作模式和当前执行任务的特性)以及影子寄存器组。

image-20221106053151366

image-20221106055203353

image-20221106055548662

image-20221106061020424

image-20221106061051286

image-20221106061118839

image-20221106061135501

ienable控制寄存器的介绍:中断允许寄存器,每一位控制一个中断通道。eg:第0位为1时表示允许第0号中断发生,如果为0这表示禁止第0号中断禁止。

ipending控制寄存器的介绍:中断发生标志位,每一位反映一个中断。eg:第0位为1表示第0号中断发生,如果位0,则表示第0号未发生中断。

cpuid控制寄存器的介绍:装载处理器的id号,该id号在生成nios II系统的时候产生,id号在多处理器系统中可以作为分辨cpu的标识。

image-20221106062130796

image-20221106062223897

**影子寄存器组介绍:**用来备份通用寄存器和状态寄存器。影子寄存器组通常会和外部中断控制器联合使用。

算数逻辑单元(ALU)

对存储在通用寄存器中的数据操作,ALU从寄存器中取出一个或者两个操作数,经过计算之后并将运算的结果返回寄存器中。nios处理器中支持的逻辑运算

  • 算数运算:加减乘除
  • 关系运算:有符号和无符号的等于、不等于、大于等于、和小于运算;
  • 逻辑运算:与、或、非、异或
  • 移位运算:逻辑右移、逻辑左移、算术右移、算术左移、循环右移和循环左移

复位信号

reset:全局硬件复位信号,这个复位信号是一个外部输入信号,高电平有效,这个信号可以强制处理器核立即进行复位。

cpu_resetrequest:本地复位信号,高电平有效,它可以只让cpu复位,而nios II系统中的其他元件不受这个复位信号的影响。

image-20221106064137417

异常和中断

image-20221106064400617

中断异常分为内部中断异常和外部中断异常。

内部中断

image-20221106065144995

具备以下条件,系统才会产生硬件中断:

1、status控制寄存器中的PIE位为1;

2、某个中断请求irqn有效;

3、在ienable 寄存器中,该中断源相应位为1;

**中断优先级:**0的优先级最高,1次之,以此类推。

当异常发生后,处理器会依次完成以下工作:

1、把status寄存器内容复制到estatus寄存器中,当保存当前处理器状态

2、清除status寄存器的PIE位为0,禁止所有的硬件中断;

3、把异常返回地址写入ea寄存器(r29);

4、跳转到异常处理地址中。

外部中断

外部中断的设置,算估计nios处理器进行设置

image-20221106070800861

其实大部设计采用内部中断即可完成我们设计要求,但是对于实时性高的中断则需要采用外部中断,外部中断支持0到63位,而内部中断只有32位。

影子寄存器组

影子寄存器可以完全的复制寄存器的内容,来完成中断等异常操作,而且因为这个所以外部中断速度比内部中断要快。

image-20221106072025572

image-20221106072130713

常见的错误

出现launching xxx nios II hardware configuration’has encountered a problem. downloading elf process failed的原因

image-20221106054917683

原因,如果勾选上面两个选项就会导致没有代码搬运这个功能

image-20221106054414971

第五讲

存储器和IO结构

Nios II存储器和IO结构非常的灵活,这就是Nios II处理器系统和传统的微控制器之间的最明显的区别。因为nios II处理器系统可以配置,存储器和外设随着系统的不同而不同,最终使得存储器和IO结构随着系统不同而发生改变。Nios II内核可以使用下面的一种或者多种方式访问存储器和IO

1、指令主端口:Avalon主端口,通过AValon系统互连结构连接到指令寄存器;

2、数据主端口:Avalon主端口,通过AValon系统互连结构连接到指令寄存器;

3、指令高速缓存:Nios II 内核里面的高速缓存;

4、数据高速缓存:Nios II内核里面高速缓存;

5、紧耦合指令或数据寄存器端口:与Nios II内核外的快速存储器相连

image-20221106074812270

**指令主端口的描述:**指令主端口只执行一个功能,即只对处理器将要执行的指令进行取指,指令主端口不执行任何写操作。

数据主端口:有两个功能

  • 当处理器执行装载指令时,从存储器或者外设中读取数据;

  • 当处理器执行存储指令时,将数据写入存储器或外设。

补充:哈弗结构就是整个系统的总线明确分为一个数据总线和指令总线,相互独立的。

冯诺伊曼结构:共享数据总线和指令总线的结构。

高速缓存(cache)–时间不可预测

image-20221106080143038

如何配置cache:

image-20221106080350434

image-20221106080643042

image-20221106080820467

MMU(memory management unit):存储器管理单元,在Nios II/f型的处理器中,可选用MMU用来完成虚拟内存管理这个工作的特定硬件。当然仅仅有硬件是无法实现这一个功能的,还需要一个能够支持虚拟内存的操作系统

image-20221106082326981

MPU(memory protection unit)存储器保护单元:MPU只提供存储器的保护,它是不支持内存映射和管理的

image-20221106082613369

image-20221106082703944

紧耦合指令或数据寄存器端口

image-20221106083007159

image-20221106083047397

image-20221106083214484

image-20221106083230357

image-20221106083253092

添加的方法:

image-20221106083439639

image-20221106083512702

JTAG调试模块

PC上的软件调试工具可以通过JTAG调试模块通信,提供调试和诊断功能

  • 把程序下载到存储器中
  • 启动和停止程序的执行
  • 设置断电和观察点
  • 分析寄存器和存储器
  • 采集实时的执行跟踪数据

image-20221106123423200

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hexyIEQL-1667709414497)(https://gitee.com/xzs520xzs/figure_of_typora/raw/master/202211061235539.png)]

image-20221106123613319

--晓凡 2022年11月6日于桂林书
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qsys 是 Intel FPGA 开发套件(Quartus Prime)中用于构建可编程逻辑的集成设计环境。使用 Qsys,我们可以方便地创建和配置用于通信的硬件组件和总线。其中之一是 Altera PCI Express(PCIe)模块,用于与主机(如计算机)进行高速数据传输。 要在 Qsys 中创建 Altera PCIe 模块,可以按照以下步骤进行: 1. 打开 Qsys 并创建一个新项目。选择适当的 FPGA 设备和时钟频率等参数。 2. 在 Qsys 的左侧面板中,选择“IP 生成器”选项卡,并在搜索框中输入“PCIE”以找到 Altera PCIe 模块。 3. 双击 Altera PCIe 模块,然后选择所需的 PCIe 版本和模式(例如 Gen2 x4)。 4. 在模块配置界面中,设置 PCIe 的基本参数,例如总线宽度、传输速度等。还可以选择是否启用插座上管脚的电源管理功能。 5. 完成配置后,点击“完成”按钮来生成 PCIe 模块的实例。 6. 若要与 PCIe 模块进行数据收发,可以在 Qsys 中添加适当的数据处理模块,例如 FIFO、DMA 控制器等。 7. 连接 Altera PCIe 模块和其他模块之间的信号和时钟,并确保适当地设置引脚映射。 8. 单击“生成”按钮以生成 Qsys 项目,并在完成后将生成的设计文件导入到 Quartus Prime 中进行综合和布局布线。 9. 完成编译后,可以将生成的二进制文件下载到 FPGA 并与计算机进行 PCIe 通信。 通过以上步骤,我们可以在 Qsys 中轻松地创建 Altera PCIe 模块,并与其他硬件模块进行集成,以满足高速数据传输的需求。这样,我们可以更方便地开发和部署基于 PCIe 技术的应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值