Altera 的SOC器件之将自定义的IP挂在ARM硬核下(通过avalon总线),实现arm核与IP之间的通信
软件: Quartus II 17.0
芯片: ALTERA Cyclone5 5CGXFC7C7F23C8
语言:Verilog
一、背景
目前的需求为上位机通过网口与FPGA上的ARM核中的系统进行通信,数据从FPGA的
普通IO口进入FPGA中进行存储与解析,然后将解析之后的数据通过avalon挂到ARM核
上,以备arm进行读取。因此需要将自定义的ip通过avalon总线挂在arm硬核之下。
Avalon是一种高性能、低延迟的总线,用于连接FPGA内部的各个IP核,支持多种数据宽度和突发传输模式。
二、步骤
1.首先由system builder生成一个特定soc的基础文件
和vivado添加基础系统ip差不多,可以选择你所需要的开发板的板载外设,,,只有单个soc芯片的话,这些板载外设都需要自己动手挂。
2.打开qsys 准备挂载自己的ip(可以是一个.v文件)
(1)新建自己的组件库
库的名称,版本号,组分类
(2)添加自定义ip
在文件中添加自己的ip (工程里所有的用到的.v文件,最后设置顶层,,,,后面还有仿真文件的添加这个没用过)
点 Analyze Systhesis File 用来分析语法错误。
(3)定义自己的输出管脚
在add interface里新增
一个conduit,是自己ip另外输出的接口,,,复位信号也新增一个,,,剩下的是默认的avalon总线的内部线。
在自定义的接口里面,signal type 最好改一改,,不然会给你乱分配一个
此时,这个挂在arm上的ip,就如上图所示,,,,可以看到,顶层 上的接口被分为了四块,第一时钟线,第二avalon总线 第三conduit 是自己的自定义线(可以是输入可以是输出,比如我这里对外挂的 uart 由输出tx 由输入rx) 第四 复位线
(4)点击finish,然后确认保存,会自动编译我们挂在arm上的ip
可以看到编译完成。
三、总结
这篇文章主要介绍了如何在Altera的SOC器件上通过Avalon总线将自定义的IP核挂载到ARM硬核上,实现两者之间的通信。以下是文章的主要内容总结:
操作步骤:
1、使用Quartus II 17.0软件和ALTERA Cyclone5系列芯片,通过Verilog语言实现设计。
2、利用System Builder生成特定SOC的基础文件。
3、打开Qsys工具准备挂载自定义IP(可以是.v文件)。
Qsys操作流程:
1、新建组件库,添加自定义IP。
2、定义输出管脚,包括自定义接口和复位信号。
3、通过Qsys完成IP核的挂载和配置。
自定义IP核开发:
确保自定义IP核用Verilog或VHDL编写,并经过功能仿真测试。
系统集成与验证:
在Quartus II中进行系统级别的仿真和验证,确保通信正确。
硬件实现与测试:
在FPGA上实现系统后,进行硬件测试以验证功能和性能。
软件驱动开发:
开发软件驱动程序,使ARM核能够控制和访问自定义IP核。
中断和DMA支持:
考虑实现中断机制或DMA以提高数据交换效率。
性能优化:
调整Avalon总线参数以优化系统性能。
调试工具和技术:
使用Altera的调试工具,如SignalTap II、ModelSim等,进行问题定位和解决。
文章强调了在Altera SOC器件设计中,通过Avalon总线挂载自定义IP核到ARM硬核上的重要性,特别是在需要高性能和复杂数据处理的应用场景中。