FPGA服务器硬件搭建涉及的知识点1
摸索了差不多一个月的基于FPGA的web服务器的搭建,今天总算差不多完成,想写篇博客梳理下知识点一看笔记本,记的太乱。想起来什么就写什么吧。
一个完整的工程包括硬件和软件。硬件部分就是用qsys搭建软核工程,用sopc builder也行,这两种我都试过了,发现用qsys比较舒服,但是qsys的各个ip核之间是没有连线的需要自己动手添加,正是因为要动手添加那感觉才爽,sopc builder是自动连线的,但是ip核的接口很少。我觉得还是自己连线好加深slave 和master的认识。
我觉得有必要先简单说说这个avalon总线,因为要手动连线还是知道点avalon的知识比较好。
这个ARM有一个总线叫AMBA总线,又定义三种组合使用的总线AHB,ASB,APB,这些总线都是他们自己搞的协议用来系统内部连接和外设连接,你要用ARM的东西就必须遵守这个协议。同样的这个avalon总线也是altera自己定义的协议,avalon-mm,avalon-st,用altera的东西你就得遵守这个avalon协议。这是人家自己定义的想叫啥就叫啥。
nios系统的所有外设都是通过avalon总线与cpu相连的,avalon总线是一种较为简单的片内总线,nios通过avalon总线与外界进行数据交换。
我们需要知道是avalon-mm总线协议:用于在存储映射系统中描述主从元件的读写接口。
avalon-mm从端口和通用io口之间提供了一个存储映射接口,io口既可以连接片上逻辑也可以连接到fpga与外设连接的io引脚。
在qsys中,每个ip核都有slave和master接口,只能slave和master相连。
以下是我系统中用到的IP核。
有人就会有疑问,这些核到底该怎么连接?
以下这么几条:
1.slave必须和master连
2.基本上每个核都有reset接口,复位接口要连两个地方
a. *.reset——>cpu.jtag_debug_module_reset(jtag调试复位);
b. *.reset——>clk_50.reset。
3.时钟问题
有的ip核对时钟的要求不同,比如说sram,sdram,jtag等等与系统有关的ip核的时钟都要接系统时钟,这个系统时钟就是你的cpu需要的时钟。比如我的系统是外部时钟50mhz,我的cpu需要100mhz,那这100mzh就是系统时钟。
另外一种ip核就是类似于key,led等的外设时钟,这类时钟就要利用allpll分频了,基本上也就是10mhz。这类时钟要接到分频以后的时钟输出上。
4.slave,master接口问题
这是最重要的连接部分。像sram,sdrma,jtag这样与系统有关的ip核的slave接口都要接到cpu的data_master,instruction_master上。
像key,led等的外设ip核的slave要接到avalon-mm clock crossing bridge的m0接口上,这个m0是master接口。
基本就这些要求。
关于使用的ip下篇再写。