视频监控系统中ARM与DSP的HPI接口设计
3 接口设计
本文引用地址:https://www.eepw.com.cn/article/83864.htm3.1 HPI接口读/写时序
读/写时序是实现计算机操作的重要一点,如果操作时序不相符,就会导致读/写数据出错,甚至是操作失败。所以,满足操作时序是实现计算机操作的先决条件之一。DM642的HPI接口操作时间为1.3ns~12ns或大约5个CPU时钟脉冲。S3C44B0X的最高时钟频率可达66MHz(约为15.2ns),由此可知DM642的HPI与S3C44B0X在读/写时序上的满足要求,接口通信可以实现。DM642的HPI32读/写时序如图1,设计接口时,必须遵守该时序。由时序图可知,控制HPI的读/写时序,通过控制HCNTL、HR/W_ 、HSTROBE_、HCS_以及HRDY_这几个信号端口就能实现。
图1 HPI32的读/写时序图
3.2硬件设计
在本设计方案中,S3C44B0X和DM642都是32位的处理器,且DM642有HPI32模式。为了充分利用资源,发挥其优势,采用32位模式设计接口。硬件电路如图2所示。
图2 硬件接口方块电路图
各引脚连接说明如下:
①HD[31:0]与CPU的数据线D[31:0]相连。在HPI接口的复用模式,32条数据线HD[31:0]除了传输数据外,还需传输地址信号。
②片选信号HCS_接nGCS4。HPI接口映射到保留的系统存储器BANK4,主机通过操作BANK4就能控制HPI。
③因S3C44B0X没有HR/W_信号,所以用A1代替,与之相连。A2、A3接HCNTL0/1,用作接口功能选择。nOE和nWBE分别接HDS1_和HDS2_作为HPI的读/写控制信号输入。
④nEWAIT接HRDY_。由于DM642的HRDY_与nEWAIT的有效逻辑电平相反,所以要通过一个非门连接。EINT1接HINT_,用来DSP向主机发中断请求。
⑤HPI32方式下,HHWL和地址选通信号HAS_无需使用,固定接上拉电阻(高电平)。
3.3 软件设计
主机通过HPI接口访问DSP内部RAM,通过控制寄存器HPIC、地址寄存器HPIA、数据寄存器HPID实现RAM的读/写。ARM主机与DSP从机的通信就是对这几个寄存器的操作。在编写接口驱动时,HPI接口是被看作接到主机RAM的外设,由硬件设计可知,它被映射到BANK4的存储空间(对应的存储器地址是0X08000000~0X0A000000)。
结合时序分析和硬件的设计,可以编写接口驱动。驱动主要包括两部分:首先是HPI寄存器初始化,然后是HPI接口的读/写代码。以下是HPI接口驱动的部分代码。
/* 地址及数据初始化 */
#define BASE_ADDR 0X08000000 // 定义基地址
/* HPIC、HPIA、HPID读写地址的偏移量 */
#define HPIC_WR 0X00
#define HPID_A_WR 0X04
#define HPIA_WR 0X0C
#define HPIC_R 0X10
#define HPID_A_R 0X14
#define HPIA_R 0X1C
/* HPI读、写代码 */
unsigned long hpi_read_data (unsigned long addr)
{ unsigned long data;
data=read_data(BASE_ADDR+HPID_R); // 读取数据
评论