DSP与FPGA之EMIF接口的调试说明
一、配置
模拟器开发板
(1). FPGA芯片:xc7k325t
(2). DSP 芯片:TM320C6747
代码:PCIeSDR-41625-FromBaiLi(内含DSP&FPGA)
二、EMIF简介
EMIF(External Memory Interface)是DSP外部存储器接口的简称,DSP访问片外存储器时必须通过EMIF控制。TM320C6747DSP具有两个EMIF:EMIFA和EMIFB。EMIFA数据总线位宽为8bit或16bit,EMIFB数据总线位宽为16bit或32bit,本文使用的是16bit数据总线位宽的EMIFA。
- EMIFA信号
EMIFA_D[15:0]:16bit位宽的数据总线
EMIFA_A[12:0]:13bit位宽的地址总线
EMIFA_BA[1:0]:2bit位宽的补位地址线
EMIFA_WE:写使能信号(低有效)
EMIFA_OE:读使能信号(低有效)
EMIFA_CS[2:5]:4个异步存储器片选信号CS2、CS3、CS4,CS5,本文使用的是片选4即CS4(低有效)(目前还不知道DSP怎样设置才能选择不同的片选信号,当前DSP代码直接选的CS4)。如下图所示,CS4寻址空间为32M
参考《tms320c6747.pdf》23页
参考《PCIE_SDR_V1P00-0424.pdf》模拟器PCB原理图 FPGA-EMIFA板块
参考《PCIE_SDR_V1P00-0424.pdf》模拟器PCB原理图 DSP-EMIFA板块
- EMIFA寄存器
- EMIFA配置寄存器有三种:
(1). AWCCR(Asynchronous Wait Cycle Configuration Register)异步等待周期配置寄存器
(2). CEnCFG(Asynchronous n Configuration Register)CEn配置寄存器(n=2/3/4/5)
(3). NANDFCR(NAND Flash Control Register)NAND flash 控制寄存器
- 下面一一介绍这三种寄存器:
参考《EMIFA-User’sGuide》3.2/3.5/3.12小节
- AWCCR
AEMIF_AWCCR = 0xff;//(1111_1111)
- CEnCFG(设置读写时序和选择数据总线位宽)
/* init CS4 - 8-bit normal async */
AEMIF_A3CR = 0x9844C2D;//0x00a00505; //0000_1001_1000_0100_1100_0010_ 1101
感兴趣的可以跳到文中Section2.5.3等对应小节for more details
读写时序:具体参考《EMIFA-User’sGuide》2.5.4小节
- NANDFCR
一开始以为是这个寄存器选择片选CSn,其实是EMIFA连接的外设是NAND flash 时配置片选信号,不用动程序最终选的就是片选4。
三、地址映射
1.逻辑地址
DSP写的数和读的数存放的地址,eg: 0x64000140;0x6400 0000是片选4起始地址
0x00000140是偏移量
2.物理地址
外设存储器的地址,cpu_addr[13:0] = {emif_a[12:0],emif_ba[1]};
当数据总线位宽为16bit,物理地址最低位是emif_ba[1]。
- 地址映射关系
将逻辑地址和物理地址对应起来
当选择了片选之后,只要将逻辑地址的偏移量和物理地址相对应就行。
例1:
偏移量à0x0140->0000 0001 0100 0000---(去掉最后两bit,且去除后第6位由0变为1)->000 0001 1100 00à emif_a[12:0]
例2:
偏移量à0x4000->0100 0000 0000 0000---(去掉最后两bit,且去除后第6位由0变为1)->1000000100000àemif_a[12:0]
注:
这个地址映射关系我没找到在哪里定义了,只是根据程序给出的对应关系推导得到的,可以直接拿来用。若知道怎么改对应关系可以改成更简单的映射关系。
//对应的情况64004000->1000000100000
//对应的情况64003000->0110000100000
//对应的情况64000000->0000000100000
//对应的情况64000002->0000000100000
//对应的情况64000004->0000000100001
//对应的情况64000008->0000000100010
//对应的情况6400000c->0000000100011
//对应的情况64000010->0000000100100
//对应的情况64000014->0000000100101
//对应的情况64000018->0000000100110
//对应的情况6400001c->0000000100111
四、FPGA-->DSP
1. FPGA向0x6400140和0x6400144地址分别写入411、211
always @(posedge cl)
begin
case(emif_a[12:0])
//FPGA->DSP
11'b0000001110000:
cpu_dr<=411; //64000140
11'b0000001110001:
cpu_dr<=211; //64000144
endcase
end
assign emif_d[15:0] = (~emif_oe) ? cpu_dr : {16{1'bZ}};
2.DSP将这两个地址的数打印出来
while(i++){
short rdval1;
short rdval2;
rdval1 = (*((volatile unsigned short*)(0x64000140)));
rdval2 = (*((volatile unsigned short*)(0x64000144)));
printf("rdval1 = %d \r\n",rdval1);
printf("rdval2 = %d \r\n",rdval2);
}
五、DSP-->FPGA
1. FPGA将0x64000148和0x6400014c地址的数分别赋值给write_test1、write_test2
int i=1;
always @(posedge cl)
begin
case(emif_a[12:0])
//FPGA->DSP
11'b0000001110010:
write_test1<=emif_d[15:0]; // //64000148
11'b0000001110011:
write_test2<=emif_d[15:0]; //6400014c
endcase
end
- DSP 向0x64000148和0x6400014c分别写入16位宽的数0x5555和0x6666
int i=1;
while(i++){
short rdval3;
short rdval4;
rdval3 = (*((volatile unsigned short*)(0x64000148)));
rdval4 = (*((volatile unsigned short*)(0x6400014c)));
rdval3 = 0x5555;//注意是16位宽的数
rdval4 = 0x6666;
}
Or 在.h文件中声明好rdval1/2/3/4的地址
#define rdval1 (*((volatile unsigned short*)(0x64000140)))
#define rdval2 (*((volatile unsigned short*)(0x64000144)))
#define rdval3 (*((volatile unsigned short*)(0x64000148)))
#define rdval4 (*((volatile unsigned short*)(0x6400014c)))
参考文献
《tms320c6747.pdf》
《PCIE_SDR_V1P00-0424.pdf》
《EMIFA-User’sGuide》
DSP与FPGA之EMIF接口的调试说明相关推荐
- DSP与FPGA间简单通信时序
DSP与FPGA采用EMIF接口通信,即将FPGA作为DSP的外部SRAM,只需设置EMIF控制的存储器为SRAM类型即可,DSP通过EMIF接口读写SRAM的时序如下: 参考datasheet< ...
- FPGA与DSP之间的EMIF接口调试
外部设备连接接口包括外部存储器连接接口(EMIF).主机接口(HPI)等.外部存储器接口主要用来同并行存储器连接,这些存储器包括SDRAM.SBSRAM.Flash.SRAM存储器等,外部存储器接口还 ...
- DSP的EMIF接口通信FPGA
DSP通过EMIF接口与FPGA通信采集视频 背景 使用FPGA系统进行视频采集,DSP进行视频处理需要了解以下知识: 1. DSP-C6000系列的中断与GPIO系统 2. DSP-C6000系 ...
- DSP通过EMIF接口与FPGA通信采集视频
DSP通过EMIF接口与FPGA通信采集视频 背景 使用FPGA系统进行视频采集,DSP进行视频处理需要了解以下知识: 1. DSP-C6000系列的中断与GPIO系统 2. DSP-C6000系 ...
- dsp6455 + FPGA的EMIF数据接口
DSP通过EMIF接口与FPGA通信采集视频 背景 使用FPGA系统进行视频采集,DSP进行视频处理需要了解以下知识: 1. DSP-C6000系列的中断与GPIO系统 2. DSP-C6000系 ...
- OMAPL138使用EMIF接口与FPGA通信
OMAPL138中的ARM通过EMIF接口把数据写到FPGA,再由ARM从FPGA把数据读取出来:EMIF共有16位数据总线和地址总线,ARM通过总线对数据进行读写: 默认时钟144M DSP裸机读写 ...
- 【有关TI C6000的DSP的EMIF接口的两个问题:地址总线不从零开始问题及寻址范围问题】
TI C66X的DSP的EMIF16接口的寻址问题:地址总线不从零开始问题及寻址范围问题 C66x EMIF16使用手册 EMIF简介及特性 EMIF16 信号说明 异步访问配置 EMIF16 EMI ...
- emif接口速率问题_有关TI DSP的EMIF接口的两个问题
接口的两个问题: 地址总线不从零开始问题及寻址范围问题 作者: JBB0523 (彬彬有礼) 示例芯片: TMS320C6416 EMIF ,即 E xternal M emory I nter F ...
- 物理气相沉积半导体设备 PVD DSP/ARM+FPGA控制器设计
磁控溅射技术属于PVD(物理气相沉积)技术的一种,是制备薄膜材料的重要方法之一.它是利用带电荷的粒子在电场中加速后具有一定动能的特点,将离子引向被溅射的物质制成的靶电极(阴极),并将靶材原子溅射出来使 ...
最新文章
- 片元着色器(Fragment Shader)被称为像素着色器(Pixel Shader),但
- 【青少年编程】【答疑】控制Scratch异步代码的执行顺序
- Elasticsearch之CURL命令的PUT和POST对比
- OpenStack的部署T版(五)——Nova组件
- 华为新系统鸿蒙有哪些手机_华为鸿蒙OS系统传来新消息!外媒宣布:未来几年内华为手机都将无缘...
- java的归并排序算法_归并排序算法Java实现
- WinAPI——Windows 消息
- 从网络访问计算机不能添加用户名,windows7 和 XP 能互相用\\ip访问,但是不能通过计算机名访问...
- chrome控制台如何把vw显示成px_【CSS】679 rem,em,px的区别和使用场景
- mysql 触发器执行失败_mysql-Mysql数据库触发器执行不成功
- Away3d学习笔记(1)
- 分享一个NHibernate的博客链接
- 面对一个全新的环境,作为一个Mysql DBA,首先应该了解什么?
- 双亲委派模型【理解】
- 求职时,我问过的问题
- Mysql --- 索引
- PL/sql快速格式化语句
- 视频结构化+AI,智能安防的未来
- php服务器监控系统,91 Monitor
- 字节跳动 校招薪资曝光,老员工被倒挂疯了~
热门文章
- Hive 的分区表是什么?
- linux的lvcreate语句,lvcreate
- 江湖侠客令服务器维护,江湖侠客令关服公告什么时候关服_关服公告及补偿_3DM页游...
- js实现图片拷贝到剪贴板
- 建设管理APP技术服务支持
- 程序猿的节日:1024,今天祝愿全球所有程序猿们、IT精英们节日快乐!
- 如何在C#+VS2012环境中使用AutoIt
- 计算机usb接口更新,教大家电脑USB接口2.0怎么升级成3.0
- 关于组织支持度和员工敬业度
- IIS错误:在唯一密钥属性“fileExtension”设置为“.mp4”时,无法添加类型为“mimeMap”的重复集合项