SPI接口的Verilog语言实现

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

电子与电气工程系

课程设计、专题(综合)实验报告

课题名称__串行接口IP核的设计与验证(spi)_

专业____ 电子信息工程________

班级_____ 08电子1班__________

学号__0806012103_ 0806012104_

姓名___ 高江柯____吴冠雄__ ______

成绩________________________

指导教师_______袁江南____________

2011年 6 月 15 日

串行接口IP核的设计与验证(SPI)

(FPGA作为主机)

一、实验目的:

通过本实验的学习,使学生掌握使用VHDL 设计一个实用数字系统的能力,以及单片机串行接口编程等知识,训练 VHDL以及单片机的编程与综合使用能力,培养工程设计的基本技能,为今后毕业设计以及实际工作奠定基础。

二、实验原理

SPI 接口是在CPU 和外围低速器件之间进行同步串行数据传输,在主器件的移位脉冲下,数据按位传输,高位在前,地位在后,为全双工通信,数据传输速度总体来说比I2C 总线要快,速度可达到几Mbps。

SPI 接口是以主从方式工作的,这种模式通常有一个主器件和一个或多个从器件,其接口包括以下四种信号:

(1)MOSI –主器件数据输出,从器件数据输入

(2)MISO –主器件数据输入,从器件数据输出

(3)SCLK –时钟信号,由主器件产生

(4)/CS –从器件使能信号,由主器件控制

在点对点的通信中,SPI 接口不需要进行寻址操作,且为全双工通信,显得简单高效。

SPI接口在内部硬件实际上是两个简单的移位寄存器,传输的数据为8位,在主器件产生的从器件使能信号和移位脉冲下,按位传输,高位在前,低位在后。下图所示,在SCLK 的下降沿上数据改变,同时一位数据被存入移位寄存器。

三、实验步骤:

1、查找关于SPI的资料,认识理解SPI。

2、根据SPI传输数据的时序图构建出SPI的框图。

3、利用自顶向下的方法根据框图分模块进行程序的编写。

4、把各模块连接构成完整的SPI传输系统。

5、进行仿真验证。

6、在康芯开发板上验证此SPI系统收发及中断功能是否正常。(由于时

间原因其步未能完成)

四、设计过程:

模块1:

输入说明:

data7[7..0] : FPGA写数据到RAM的输入口。

enable : 为输入使能。

reset : 复位。

clk : 输入时钟。

contr_addr[5..0]: FPGA写数据到RAM的地址的最大值,即写入RAM

中数据的个数。

feedback : SPI系统发送完数据的反馈,提示FPGA又可以重

新写数据到RAM,然后发送。

输出说明:

wr_en : 控制RAM写使能。

wr_addr : 写数据到RAM的地址控制,写一数据地址加一。 wr_clock : RAM写数据时钟,上升沿有效。

fullflag : RAM写满的标志。

data_out[7..0] : RAM中写入的数据。

模块说明:

FPGA通过SPI发送数据,数据必须要有个缓存阶段。此设计中是利用RAM 作为缓存。该模块就是数据写入RAM的控制器,并提示FPGA开始发送数据及发送多少个数据。SPI发送完数据后提示FPGA重新写数据到RAM继续发送。

仿真时序图:

模块2:

输入说明:

data[7..0] :输入RAM的数据。

wraddress[5..0] :RAM写地下输入,写一数据地址加一。

wren :RAM写使能

rdaddress[5..0] :RAM读地址输入,读一数据地址加一。

rden :RAM读使能

wrclock :RAM写数据时钟,上升沿有效。

rdclock :RAM读数据时钟,上升沿有效。

输出说明:

q[7..0] :读RAM数据输出口。

模块说明:

这是双通道的RAM,此设计中需要定制2个容量为64BIT的,能进行数据的读写。需注意的数据的读写不能同时操作。

模块3:

输入说明:

clk :系统时钟。

ramindata[7..0] :输入需要发送的数据。

Cpuwr :

Miso :主机输入从机输出。

Reset :复位。

RFirq :开始发送。

Fullflag :RAM存满,请求开始发送标志。

Addr_num[5..0] :需要发送数据的个数。

输出说明:

feedback :发送完数据后反馈给RAM控制器,请求重新写入RAM数据

发送。

outdata[7..0] :接收到从机发出的数据,用于测试。

mosi :主机发出的移位数据,从机输入。

Irq :发送完中断主求。

CSN :从机选择控制,低电平有效。

SCK :主机从机发送移位数据时钟。

SendAddr[5..0] :RAM读地址控制,读取RAM中的数据进行发送。SendRDen :RAM读使能。

ReceiveData[7..0] :接收到的数据,用于写入RAM。

ReceiveAddr[5..0] :接收到的数据写入RAM的地址控制。

SendramClk :读取RAM中的数据用于发送的时钟,上升沿有效。ReceiveClk :接收到的数据写入RAM中的时钟控制,上升沿有效。ReceiveWen :接收到数据写入RAM使能。

CE:

Sendfinishtest :发送结束标志。

ram_rd :整个数据接收完后,读取RAM中数据使能。

ram_rd_clk :整个数据接收完后,读取RAM中数时钟,上升沿有效。ram_rd_addr[5..0] :整个数据接收完后,读取RAM中数据的地址控制。

模块说明:

此模块是整个系统的核心部分,控制着SPI的收发。

其整个流程大致如下:

相关文档
最新文档