嵌入式驱动开发之dsp fpga通信接口---spi串行外围接口、emif sram接口
-----------------------------------------author:pkf
------------------------------------------------time:2015-3-17
-----------------------------------------------------qq:1327706646
(0)应用背景
(1)i2c 两根线
(2)spi 用作控制接口4根线
(2)emif 用作大数据传输接口16位数据带宽
(3)dma
(4)输入口
(0)
在雷达信号处理、数字图像处理等领域中,信号处理的实时性至关重要。由于FPGA芯片在大数据量的底层算法处理上的优势及DSP芯片在复杂算法处理上的优势,DSP+FPGA的实时信号处理系统的应用越来越广泛。ADI公司的TigerSHARC系列DSP芯片浮点处理性能优越,故基于这类。DSP的DSP+FPGA处理系统正广泛应用于复杂的信号处理领域。同时在这类实时处理系统中,FPGA与DSP芯片之间数据的实时通信至关重要。比如
赛灵思Kintex-7 FPGA 系列芯片和ti的6678 或key stone 系列通信
DSP与FPGA采用EMIF接口通信,即将FPGA作为DSP的外部SRAM,只需设置EMIF控制的存储器为SRAM类型即可,DSP通过EMIF接口读写SRAM的时序如下: 参考datasheet《tms320dm642.pdf》
可以根据以上时序图编写FPGA代码,以下仅供参考:
module DSP_FPGA(
input clk,
input [2:0] addr, //简单测试,没有用到所有地址
inout [15:0] data, //16位数据宽度
input CE_2,//FPGA片选
input AOE,
input AWE
);
reg [15:0] DSP_FPGA_REG0;
reg [15:0] DSP_FPGA_REG1;
reg [15:0] DSP_FPGA_REG2;
reg [15:0] DSP_FPGA_REG3;
reg [15:0] DSP_FPGA_REG4;
reg [15:0] DSP_FPGA_REG5;
reg [15:0] DSP_FPGA_REG6;
reg [15:0] DSP_FPGA_REG7;
wire rd_en = ~CE_2 && ~AOE;
reg [15:0] data_reg;
//always @(posedge clk) //DSP读操作,The sampling point of DSP reading is the risging edge of AWE!
always @(*) //这里没有用时钟,用的latch
begin
if(rd_en)
begin
case(addr[2:0])
3'd0 : data_reg <= DSP_FPGA_REG0;
3'd1 : data_reg <= DSP_FPGA_REG1;
3'd2 : data_reg <= DSP_FPGA_REG2;
3'd3 : data_reg <= DSP_FPGA_REG3;
3'd4 : data_reg <= DSP_FPGA_REG4;
3'd5 : data_reg <= DSP_FPGA_REG5;
3'd6 : data_reg <= DSP_FPGA_REG6;
3'd7 : data_reg <= DSP_FPGA_REG7;
default: ;
endcase
end
end
reg AWE_tmp1;
reg AWE_tmp2;
always @(posedge clk)
begin
AWE_tmp1 <= AWE;
AWE_tmp2 <= AWE_tmp1;
end
wire AWE_RISING = ~AWE_tmp2 && AWE_tmp1;//与clk同步
always @(*)
begin
if(AWE_RISING) //这里也没有用时钟,用的是latch
begin
case(addr[2:0])
3'd0 : DSP_FPGA_REG0 <= data;
3'd1 : DSP_FPGA_REG1 <= data;
3'd2 : DSP_FPGA_REG2 <= data;
3'd3 : DSP_FPGA_REG3 <= data;
3'd4 : DSP_FPGA_REG4 <= data;
3'd5 : DSP_FPGA_REG5 <= data;
3'd6 : DSP_FPGA_REG6 <= data;
3'd7 : DSP_FPGA_REG7 <= data;
default: ;
endcase
end
end
assign data = rd_en ? data_reg : 16'hzzzz;
endmodule
//////////////////////////////////////////////////////////
DSP(具体为DM642)端程序:寄存器设置参考 《EMIF Reference Guide- spru266b.pdf》即spru266
#define FPGA_ADDR 0xA0000000
//#define EMIFA_GBLCTL 0x01800000
#define EMIFA_CECTL2 0x01800010
//#define EMIFA_CESEC2 0x01800050
void delay(unsigned long time)
{
unsigned long i;
for(i = 0; i < 1000; i++)
{
for(; time >0 ; time--)
{
}
}
}
unsigned short write_value = 0;
unsigned short read_value = 0;
int main(void)
{
unsigned short *ptr;
*(unsigned volatile int *)EMIFA_CECTL2 = (unsigned int)0xFFFFFF13;//设置EMIF控制的存储器类型为 //16位宽SRAM
ptr = (unsigned short *)(unsigned int)FPGA_ADDR;
while(1)
{
*ptr = write_value;
read_value = *ptr; //调试时通过观察write_value与read_value的值是否相等可以检验通信是否正常
delay(100000);
write_value++;
}
return 0;
}
(4)输入口
Brave 2015/3/13 10:44:05
接口是GPMC
ghos 2015/3/13 10:44:41
没编码压缩的肯定不行吧,可以考虑pcie
2015/3/13 10:46:54
Brave 2015/3/13 10:46:54
GPMC 一般就支持NOR或者nand NOR肯定没问题的 nand的话有现成驱动 不用DSP和FPGA端都进行调试要轻松点
Brave 2015/3/13 10:47:53
存储会考虑PCIE 我们这儿不会用
2015/3/13 10:51:10
ghos 2015/3/13 10:51:10
关键是你要传输多大的视频,带宽要够才行
2015/3/13 10:51:57
Brave 2015/3/13 10:51:57
原始码流
Brave 2015/3/13 10:52:17
打算用16bit nand方式
ghos 2015/3/13 10:52:38
你板子16bitnand带宽能做到多少?
Brave 2015/3/13 10:53:19
不知道啊 也还没看具体时序
2015/3/13 10:54:36
ghos 2015/3/13 10:54:36
估计一般不会有人这么设计吧,用pcie的比较多
Brave 2015/3/13 10:55:42
我先试试看吧 不行用Nor 不过调试起来麻烦点
Brave 2015/3/13 10:56:19
我们确实要求用GPMC 原理上应该不会有问题
2015/3/13 11:00:27
ghos 2015/3/13 11:00:27
你得先确认带宽需求,要是理论值都达不到的话做了也是白做
2015/3/13 11:01:56
Brave 2015/3/13 11:01:56
怎么确定 我只知道会用一个3D摄像机 数据量应该不小.....
ghos 2015/3/13 11:02:24
看图像分辨率
ghos 2015/3/13 11:02:37
和要传输几路视频
Brave 2015/3/13 11:02:45
1080P60
ghos 2015/3/13 11:03:04
你是做硬件的还是做软件的?
Brave 2015/3/13 11:03:09
几路也没问.........项目说明书没有...
Brave 2015/3/13 11:03:13
软件
2015/3/13 11:04:34
Brave 2015/3/13 11:04:34
估计2-3路 不是视频会议
ghos 2015/3/13 11:04:35
你是做软件的,那硬件的设计你让硬件设计师去考虑吧,3d的可能需要同时传输两路 1920*1080*2*8*2 你可以初步估算一下
自由 2015/3/13 11:05:09
GHOST这个是广州的么?
ghos 2015/3/13 11:06:00
不是
自由 2015/3/13 11:06:11
我以为是亿航呢。
2015/3/13 11:09:07
Brave 2015/3/13 11:09:07
看起来挺大的...
2015/3/13 11:11:23
ghos 2015/3/13 11:11:23
这还只是一帧,p60你还得*60
Brave 2015/3/13 11:12:15
。。
ghos 2015/3/13 11:12:40
GPMC是你们做硬件的定的么?
Brave 2015/3/13 11:12:50
嗯
Brave 2015/3/13 11:13:05
老板定的...
2015/3/13 11:25:23
ghos 2015/3/13 11:25:23
让你们老板跟你发奖金,你可以让他避免一两个月的人工浪费和做样板的费用,省掉几万块呢
ghos 2015/3/13 11:29:03
如果做d1的倒还是可能的,1080p60应该不靠谱
2015/3/13 11:30:00
ghos 2015/3/13 11:30:00
你们是fpga预处理输入的视频,然后给到8168处理?
Brave 2015/3/13 11:31:19
是的 应该可以稍微提高速率
ghos 2015/3/13 11:31:49
没有上g的带宽,1080p60怎么玩
Brave 2015/3/13 11:31:56
我也不确定有没有预处理再过来
2015/3/13 11:32:09
ghos 2015/3/13 11:32:09
8168有vport的,为什么不直接用
Brave 2015/3/13 11:32:25
还没研究到那儿去..
2015/3/13 11:37:15
Brave 2015/3/13 11:37:15
之前不知道方向纠结于整个体系的实现机制 … 收获还不是很大 进度就这样下来了…
ghos 2015/3/13 11:38:53
这样的话,请个熟悉平台的人做兼职顾问吧,要是钻进死胡同,那可大大的不妙
2015/3/13 11:40:57
Brave 2015/3/13 11:40:57
我还是嵌入式菜鸟…
Brave 2015/3/13 11:40:59
预处理也要先到共享内存才执行吧
2015/3/13 11:42:13
Brave 2015/3/13 11:42:13
还是得自己多看 有点积累别人才能点通 …
ghos 2015/3/13 11:42:44
这样要看硬件设计了,fpga和8168之间做共享内存不是那么容易吧,一般还是得靠传输
Brave 2015/3/13 11:43:49
应该是先得到原始数据再压缩
2015/3/13 11:45:48
ghos 2015/3/13 11:45:48
感觉你没说到一块去,你知道你们fgpa在系统中的作用是什么吗
虎啸山 2015/3/13 11:45:55
emif传输?
Brave 2015/3/13 11:46:09
各种外设…
2015/3/13 11:46:52
Brave 2015/3/13 11:46:52
速度达到了不就自然当成DDR了吗
虎啸山 2015/3/13 11:47:10
之前做过dm6467和fpga传输
Brave 2015/3/13 11:48:14
不是很清楚fpga 先把他当成一个外设看待
2015/3/13 12:00:34
TI专家-兼 2015/3/13 12:00:34
8168要用VPORT要不1080P60 会有问题的
TI专家-兼 2015/3/13 12:00:51
GPMC肯定不能用的
2015/3/13 12:29:20
流泪的佛 2015/3/13 12:29:20
还是pcie吧,哥正在研究~
2015/3/13 12:29:42
Brave 2015/3/13 12:29:42
嗯 周末再研究研究
TI专家-兼 2015/3/13 12:29:47
PCIE有延时
TI专家-兼 2015/3/13 12:29:52
VIP是必须的
TI专家-兼 2015/3/13 12:30:10
2个VIP,每个24bit RGB支持1080P
流泪的佛 2015/3/13 12:30:51
恩,vip的话软件开发也简单多了
流泪的佛 2015/3/13 12:31:07
Hdmi接口也可以吧
TI专家-兼 2015/3/13 12:31:28
HDMI就是进的VIP
2015/3/13 12:33:19
流泪的佛 2015/3/13 12:33:19
Vip是芯片直连,如果板子已经做好的话,也只能考虑像pcie,hdmi之类的接口吧
TI专家-兼 2015/3/13 12:33:45
1080P60 3Gbps,你算算2路怎么进吧
2015/3/13 12:35:19
流泪的佛 2015/3/13 12:35:19
这样的话Pcie速度还很危险……
Brave 2015/3/13 12:35:21
通常接口只能编码之后了
流泪的佛 2015/3/13 12:36:34
我们是传1080p30
流泪的佛 2015/3/13 12:36:51
所以pcie两路问题不是问题
2015/3/13 12:37:38
TI专家-兼 2015/3/13 12:37:38
PCIE什么时候算一帧传输完了,可以使用了,系统延时是个问题啊
TI专家-兼 2015/3/13 12:38:56
而且做双目要两幅同一时刻的图像
TI专家-兼 2015/3/13 12:39:17
PCIE会增大系统难度
2015/3/13 12:56:24
流泪的佛 2015/3/13 12:56:24
恩,难度好大,尤其fpga那头,搞起我了
流泪的佛 2015/3/13 12:56:30
死
2015/3/13 13:24:54
Brave 2015/3/13 13:24:54
ARM这边是不是随便给FPGA一个时序,那边就可以对应上...........
2015/3/13 14:06:40
扬帆起 2015/3/13 14:06:40
FPGA 搞时序是最容易的
2015/3/13 16:24:25
Brave 2015/3/13 16:24:25
看了gpmc_nand.c里面只是对硬件借点做了注册,而且没有时序信息,请问各位怎么可以找到软件节点呢...
2015/3/13 17:13:03
Brave 2015/3/13 17:13:03
搜索.name找到了... 弱智了一回..
实际测试发现写入与读出的值相同
http://blog.sina.com.cn/s/blog_500bd63c0101d3z8.html
http://zhidao.baidu.com/link?url=1v_S2rwD2CN56G3JUmZhkZUDSYROC0asGaTsw0AQSILHDN7VFF7EqjP_eoTS9L9HsPaPbP3YxikVpwNrA9kgwK
http://www.sdedu.cc/tx/hlwjs/1103.html dsp fpga 简介
http://www.eepw.com.cn/article/190225.htm kentex 7 fpga 简介
http://xilinx.eetop.cn/viewthread-325043
嵌入式驱动开发之dsp fpga通信接口---spi串行外围接口、emif sram接口的更多相关文章
- 嵌入式驱动开发之dsp 算法优化vlib emcv---算法优化
http://www.opencv.org.cn/forum.php?mod=forumdisplay&fid=9
- 嵌入式驱动开发之spi---spi串口通信调试
一. 概念 SPI是 Serial Peripheral Interface(串型外部接口)的缩写.SPI接口有4根PIN脚,分别是: * SPICLK : 用于传输数据的同 ...
- 嵌入式驱动开发之sensor---"VIP0 PortA", "VIP0 PortB", "VIP1 PortA", "VIP1 PortB",dvo0(vout1) dvo1(vout0)
(1)vip 简介 (2)vip 电路图 (3)vip 更换采集相机输入 (4)vip 驱动 ---------------------author:pkf --------------------- ...
- 嵌入式驱动开发之uboot---uboot 中的常见命令参数参数
Uboot相关命令介绍 bootm bootp cmp cp crc32 echo erase flinfo go minfo loadb loads mw 14mw 用指定的数据填充内存 15md ...
- 嵌入式驱动开发之usb 无线网卡驱动---RT2870STA dm368
RT2870STA 368的无线网卡驱动! http://www.linuxidc.com/Linux/2014-02/96979.htm
- 嵌入式驱动开发之phy---fine Mac与Phy组成原理的简单分析
关键字rj45.pci-e 1. general 下图是网口结构简图.网口由CPU.MAC和PHY三部分组成.DMA控制器通常属于CPU的一部分,用虚线放在这里是为了表示DMA控制器可能会参与到网口数 ...
- 嵌入式驱动开发之sensor---sensor 图形传感器调试
图像传感器(image sensor)复位顺序 1. 硬件复位寄存器:2. 软件复位寄存器:3. 设置时钟寄存器:4. 设置PLL倍频:5. 设置分辨率:6. 设置窗口控制:7. 设置输出顺序:8. ...
- 嵌入式驱动开发之2440/2410---uboot 移植
http://blog.chinaunix.net/uid-20620288-id-3058904.html
- Android驱动开发之Hello实例
Android驱动开发之Hello实例: 驱动部分 modified: kernel/arch/arm/configs/msm8909-1gb_w100_hd720p-perf_defconf ...
随机推荐
- css学习笔记 --初学 css代码风格、布局误区
初学css,记录下初学者需要注意的事项. 一.css 代码风格 1.css 命名语义化. 如类名: main 主体 container 内容 footer 站底 right.center ...
- FPS计算New
using UnityEngine; using System.Collections; public class CarGUI : MonoBehaviour { private const flo ...
- FIFO、LRU、LFU的含义和原理(转)
题目:请简要介绍FIFO.LRU.LFU的含义和原理 含义: FIFO:First In First Out,先进先出LRU:Least Recently Used,最近最少使用 LFU:Leas ...
- 关于DevOps你必须知道的11件事
转自:http://www.infoq.com/cn/articles/11devops 关于作者 Gene Kim在多个角色上屡获殊荣:CTO.研究者和作家.他曾是Tripwire的创始人并担任了1 ...
- 【微信小程序】退款功能教程(含申请退款和退款回调)
1.一定要区分小程序和公众号的退款,唯一的区别就是 appid不一样,其他的都是一样的. 不废话,直接写代码了啊. 放大招!!! 然后,需要注意的:最好是把证书放在下面的php的同级或者下级. 证书的 ...
- HTML-HTML5+CSS3权威指南阅读(四、媒体查询)
1.媒体类型 HTML 4和CSS 2目前支持为不同的媒体类型设定专有的样式表, 比如, 一个页面在屏幕上显示时使用无衬线字体, 而在打印时则使用衬线字体, screen 和 print 是两种已定义 ...
- 【转】ESFramework成熟的C#网络通信框架(跨平台)
原文地址:http://www.cnblogs.com/zhuweisky/archive/2010/08/12/1798211.html ESFramework网络通信框架是一套性能卓越.稳定可靠. ...
- Actors编程模型
Actors模型(Actor model)首先是由Carl Hewitt在1973定义, 由Erlang OTP (Open Telecom Platform) 推广,其 消息传递更加符合面向对象的原 ...
- python selenium --调用js
转自:http://www.cnblogs.com/fnng/p/3230768.html 本节重点: 调用js方法 execute_script(script, *args) 在当前窗口/框架 同步 ...
- MONGODB Date 处理方法
mongodb 日期处理:1,用new Date()存入数据库,要转一下.2,输出的显示的时候,要把data 后的Z 去啦.3, 查询时数据时不用处理.