SPI接口的Verilog语言实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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的收发。
其整个流程大致如下: