-
14.1里所需要的文件不是hps_clock_info.xml,你在14.1安装目录下去搜example,将里面的makefile和两个xml文件复制过去
-
在这个文件夹下altera\14.0\embedded\ip\altera\hps\altera_hps有部分api和使用
-
本帖最后由 ThisOneGood 于 2015-3-18 12:01 编辑
我没搞过arm所以不太懂,如果想在linux下跑应用程序,没有api,怎么搞,arm人员说他不能直接操作寄存器,只能调用api
还有nios都能出api,为啥hps反而不能。。
-
chenzhufly 发表于 2015-3-18 11:28
你加了nios进去?
用了hps就没加nios啊
-
chenzhufly 发表于 2015-3-17 09:24
楼上有没有现成的例子啊
我正准备做一个
你问的是我楼上吧,我是没有,还在根据项目需求考虑有没有必要一定自己去写
-
lelee007 发表于 2015-3-16 23:45
可以肯定的说,你的理解是正确的,只不过没你想想的那么复杂
一个master很容易写,比如说一个write-only的master,让AXI或者avalon的master口去往某个地址写数据就OK了,你要做的就是根据总线协议判断总线状态,可以写的时候(总线未反压你的master口),你又想写的时候,把数据丢出去就OK了
master的配置,可以分解成两个要点来理解。第一点,简单一点说,就是master工作的时候,需要一些工作模式相关的配置参数,这些参数可以理解成放置在指定的ram中,master开始工作之前,先从这些ram中把相关参数读出来,然后决定自己以何种模式和方式去工作。第二点,ram中的实际数据被写的过程,就是master被配置的过程,这个当然需要另外的master,通过工作的master所在的module的slave口来把参数写到ram中,往往写这个slave口的master就是CPU啦,当然,如果这个module需要和其他module协同工作的话,也有可能是其他module来配置这个module的master
至于优先级,这个总线自己来仲裁,你只需要把优先级功能拿来使用即可
这些工作只需要一个非常简单的状态机即可全部完成,不需要arm这么复杂的状态机
1、你所说的write-only master我可不可以理解为半个dma?好像感觉是不难了。。
2、优先级总线仲裁这东西,是soc自己添加进去的吗?就像位宽adapter之类的适配器也是自动添加的?
3、你开始讲根据总线协议,这个是自己定义的呗,比如我想发,他同意,我发;他请求,我同意,我发;定时发……
-
本帖最后由 ThisOneGood 于 2015-3-16 17:50 编辑
chenzhufly 发表于 2015-3-16 17:05
我的理解是,对于arm来说就是对地址空间进行读写操作啊,所谓api可以把memory操作函数包装一下就可以了
我基本已经无奈的接受就是要自己写个master,因为如果使用dma,就感觉好像为了必须用f2h桥才用dma的,结果无非由从原来的h2f读数据变成了从f2h写数据,难道是为了提高数据读取吞吐或者说通道?
之所以说无奈,是因为我不明白这么几点:
1、自己写个master很简单吗。。这个master的配置由谁来操作或者说由谁来触发?fpga自己写呗,定时器?又或者再定义个协议?我勒个擦。。
2、如果好几个外设都要走这条路,难道我还要自己做个排序做个优先级,那我干脆变成个arm?
3、好几条路我就根据每个外设写这么一个master?
4、SoC不是强调底层的高效灵活,为何还要让fpga去没事客串当个主控呢?
我已经是一锅浆糊了,谁能帮我。。
-
本帖最后由 ThisOneGood 于 2015-3-16 16:30 编辑
还有,如果真的是自己写的master核,添加到soc中之后,对于arm怎么去跑linux,altera提供的api都是自带核的,自己写的核没有api怎么办?就好比我自己写了一个类似dma的东西,但是它的配置接口肯定是没有对应的api的,altera有这种功能可以生成底层控制的api?不太可能吧。。
-
我看文中提到fpga也可以控制hps的外设,我想知道这种控制除了nios,除了jtag还能怎么控?或者说在Qsys中,还有什么模块能作为axi master或者avalon master的。
再比如F2H桥对于FPGA来说其接口是一个AXI Slave的,那如果我想主动通过这个桥给HPS发送数据,我需要一个什么核去做这个AXI Master来驱动F2H,目前只想到DMA,虽然DMA收发都是master的,但是其控制接口是slave的,说白了就算用DMA也一样需要个master,那这个master如果不是HPS还能是谁,难道FPGA自己写个master核?
-
本帖最后由 ThisOneGood 于 2015-3-16 12:00 编辑
lelee007 发表于 2015-3-14 08:29
关于SOC上ARM和FPGA,你的理解是正确的
linux上的应用层开发,会涉及到一些API
在linux下跑的话,内核态是有权限直接操作寄存器的,如果是在用户态,要看外设寄存器的访问权限是否让运行linux用户态的arm user mode去访问,如果能访问,用户态也可以通过一些手段来直接访问寄存器,如果不能,那用户态只能通过驱动来访问寄存器了,多数寄存器是可以在user mode去访问的,但是又一些寄存器可能是不允许user mode访问的
明白,多谢你的回复,再请教一个问题,你觉得对于fpga人员来说,除了开发所需的软核外设以外,还要做什么必要的工作?还有fpga到arm的桥在什么情况下用,能给俺举个例子不?万分感谢。
-
ThisOneGood 发表于 2015-3-12 17:18
您好,我在软核nios里写应用的时候,bsp是生成好了api我可以直接使用的,但在硬核hps里我只看到可以用generate_hps_qsys_header.sh生成soc系统里的宏定义,而没有api函数可供调用,我觉得不应该说一个软核能实现的东西,反而hps不支持的道理,而且我看到de1-soc等都有api,为什么我用的这个友晶的sockit就没有相关介绍呢。。
表示api已找到,发现每次都是在发帖之后就灵光一现解决问题:congratulate:
-
表示api已找到:pleased:
-
lelee007 发表于 2015-3-12 22:19
linux本身只是一个kernel,没有API一说,就算有,也只能叫KPI吧
关于kernel的接口,还真没有,不过开源社区有一些方法可以让kernel在编译的时候生成接口文件
居然是版主回复^_^,可能是我描述的不对,是用ds5编写hps(arm)的应用程序,然后在linux下跑,如果我想控制soc里外设,不是应该控制对应外设的一堆寄存器嘛,arm人员跟我说在linux下跑他用的只能是api,不能直接对寄存器赋值,可是我又找不到哪有api。。
另外一个非常重要的问题:单从分工来说,soc这东西我感觉更应该属于arm的工作吧?虽然soc里面有fpga,但是这个fpga更像是给arm提供他想要的外设,soc的建立调试等等不应该由arm人员实现更靠谱吗?fpga人员做的应该是实现一些外设,或者说arm自定义的但是fpga里没有的硬核由fpga开发出软核,不知道我的理解对不对?
-
您好,我在软核nios里写应用的时候,bsp是生成好了api我可以直接使用的,但在硬核hps里我只看到可以用generate_hps_qsys_header.sh生成soc系统里的宏定义,而没有api函数可供调用,我觉得不应该说一个软核能实现的东西,反而hps不支持的道理,而且我看到de1-soc等都有api,为什么我用的这个友晶的sockit就没有相关介绍呢。。
-
ThisOneGood 发表于 2015-2-2 16:02
非常感谢您前面的指导,我又有了一个有点具体的问题是关于13.1中TSE三速以太网的使用的。
1、我想知道使用avalon-st接口送入这个MAC时,有没有什么帧结构需要满足。如下图所示,我发送的数据是0x1234ee05,0x22222222,0x33333333,0x44444444。。。0xDD000000,但可以看到经过mac的发包中包含7个字节的前导头55,1个定界符0xd5,之后的第一个数据竟然是0x1234,而0xee05没有了,发包自环之后收到的st数据也是没有0xee05的,我想知道是什么原因?
2、测试中我把0x44444444换成0x44004444,环回后无任何数据只收到一个eop,像是收帧错误直接用eop结束,按说这应该跟数据没关系啊?
3、我看datasheet中mac帧结构定界符后面是收发的ip地址,但这个核出来并没有这个字段?
问题基本确定为两点:1、配置问题:寄存器配置中包含一个32bit对齐,自动将前32bit归零;配置包含进行数据长度检测以及出错是否丢包等配置
2、datasheet中指明Frame Length不仅要包含有效数据还要包括收发的ip地址和自身长度字节,但调试中确定是不包含的,不知道是datasheet的错误还是自己还有其他遗漏
-
非常感谢您前面的指导,我又有了一个有点具体的问题是关于13.1中TSE三速以太网的使用的。
1、我想知道使用avalon-st接口送入这个MAC时,有没有什么帧结构需要满足。如下图所示,我发送的数据是0x1234ee05,0x22222222,0x33333333,0x44444444。。。0xDD000000,但可以看到经过mac的发包中包含7个字节的前导头55,1个定界符0xd5,之后的第一个数据竟然是0x1234,而0xee05没有了,发包自环之后收到的st数据也是没有0xee05的,我想知道是什么原因?
2、测试中我把0x44444444换成0x44004444,环回后无任何数据只收到一个eop,像是收帧错误直接用eop结束,按说这应该跟数据没关系啊?
3、我看datasheet中mac帧结构定界符后面是收发的ip地址,但这个核出来并没有这个字段?
-
夏老师您好:
我刚刚接触SOPC,用的是Cyclone 5的SoCKit,目前对这个平台有了一定的了解。在这个系统下,HPS端可以不管底层而仅作app的开发,那我不明白的是对于FPGA来说,如何开发属于自己的“app”。FPGA接入soc的IP核都是通过avalon-MM主从接口进行交互,那如果我自己的一段程序得出的一些数据,要如何接入到这个系统内呢?总不能自己实现MM吧?
-
thx!
-
夏老师您好:
想请教一下关于IP核FIRV11.0实现插值滤波器的问题。
目前来说,核的基本配置感觉不出哪有问题,对于ST avalon接口用的也很多,仿真也应该没有问题,但是结果明显不对,一方面是仿真结果根本不连续,低通滤波器出来的应该是连续没有尖峰的吧,另一方面我把输出结果拿到matlab里中去仿真频谱,发现根本没有滤波效果,倒更像是插值后频谱拓展而没有低通滤波的结果。个人分析,就算是有些地方配置不对甚至接口错误,好歹最后结果也应该是连续的啊,毕竟fir配置的是低通滤波啊。
不知道您对这个核实现插值(2倍为例)有没有什么需要特别注意的地方。
下图是fir配置图:
下图是modelsim仿真结果,接口采用控制sink_valid为1/2,使得sink_ready和source_ready为常高
下图中第一个为matlab生成的测试数据和通过低通滤波的结果,第二个是理论频谱
第三个是把modelsim导入分析的频谱
-
您好:
我使用quartus11.0编译别人的某工程时,不能生成sof和pof文件,最后给出的warning是
Can't generate output files. Specify command-line options to generate output files, or update EDA tool settings using GUI or Tcl script. 但是我自己的工程都没问题
出现这种情况有哪些可能呢?
是某些ip新老版本不兼容?或者工具破解不对?