spi控制器程序

spi控制器程序

ID:27550970

大小:81.54 KB

页数:7页

时间:2018-12-03

spi控制器程序_第1页
spi控制器程序_第2页
spi控制器程序_第3页
spi控制器程序_第4页
spi控制器程序_第5页
资源描述:

《spi控制器程序》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、/*设计一个SPI控制器,接收到发送数据命令以后,主设备首先生成片选信号,然后生成SPI时钟信号。在SPI时钟的上升沿将发送数据(从高位到低位}送到SPI总线,发送数据完毕后,片选信号置为无效(置高),并撤除SPI时钟。7modulespimaster(rst_n,elk,rd_n,wr_n,datain,spics_n,spiclk,spido,spidi,dataout,dstate);inputrst_n;//复位信号,低有效inputelk;//时钟信号inputrd_n;//接收数据命令i叩utwr_n;//发送数据命令i

2、叩utspidi;//SPI数据输入信号input[7:0]datain;//发送数据输入outputspics_n;//SPI片选信号,低有效outputspiclk;//SPI时钟信号outputspido;//SPI数据输出信号output[7:0]dataout;//接收数据输出output[7:0]dstate;regspies』;regspiclk;regspido;reg[7:0]ent;//用于计数reg[7:0]dstate;//状态机reg[7:0]dsend;//即datatosend,要发的数据reg[7:0

3、]dreceive;//datatoreceive,要接收的数掘暂时存放在dreceivereg[7:0]dataout;reg[1:0]spistate;//SPI控制器的状态:空闲、发送、接收parameteridle=2'bOO;parametersend_data=2'b01;parameterreceive_data=2'bl0;always@(posedgeelk)beginif(!rst_n)begin//复位,将SPI置为空闲状态spistate<=idle;ent<=8'dO;spics_n<=l'bl;spicl

4、k<=l'bl;spido<=l'bl;dstate<=8'dO;endelsebegin//如果rst_n是高电位,下面分别表述SPImaster的三种状态case(spistate)2'b00:begin//空闲状态,spics_n、spiclk、spido均是高电位spics_n<=l'bl;spiclk<=l'bl;spido<=l'bl;if(cnt==8*d40)begin/////////////???????????????????cnt<=8'dO;if((wr_n==1'bO)&&(rd_n==l'bl))beg

5、in//发送命令有效spistate<=send_data;dstate<=8'dO;dsend<=datain;endelseif((wr_n==l'bl)&&(rd_n==1'bO))begin//接收命令有效spistate<=receive_data;dstate<=8'dO;endendelsebegincnt<=cnt+8*dl;endend2'blO:begin//SPI主端接收数据case(dstate)8'dO:beginspies一n<=1'bO;"spies一n置低,有效spiclk<=l'bl;spido<=

6、l'bl;dstate<=8’dl;//下个elk的上升沿到来吋,检测到的将是dstate=l.end8'dl:beginspics_n<=1'bO;spiclk<=l'bl;spido<=l'bl;dstate<=8'd2;end8'd2:beginspics_n<=1'bO;spiclk<=1'bO;spido<=l'bl;dstate<=8'd3;end8'd3:beginspics_n<=1'bO;spiclk<=l'bl;dstate<=8'd4;end8'd4:beginspics_n<=1'bO;spiclk<=1’b

7、O;//spiclk的下降沿dreceive[7]<=spidi;//接收第7位dstate<=8'd5;end8'd5:beginspies一n<=1'bO;spiclk<=l’bl;//spiclk的上升沿dstate<=8'd6;end8'd6:beginspies一n<=1'bO;spiclk<=1'bO;dreceive[6]<=spidi;//接收第6位dstate<=8'd7;end8'd7:beginspics_n<=1'bO;spiclk<=l'bl;dstate<=8'd8;end8'd8:beginspics_

8、n<=1'bO;spiclk<=1'bO;dreceive[5]<=spidi;//接收第5位dstate<=8'd9;end8'd9:beginspics_n<=1'bO;spiclk<=l'bl;dstate<=8'dlO;end

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。