原创 一个CPLD的SPI应用实例

2008-12-7 16:08 5217 1 1 分类: FPGA/CPLD
    采用昨天的SPI模块做的一个应用实例, 还附带了testbench文件,发现所写的SPI模块还挺方便及实用的,SPI模块的文件在上篇日志里有下载。

module spim(rst,clk,
      sdi,sdo,sck,cs,
      idata1,idata2,odata1);


input rst;                    // 异步清零                                   
input clk;                   // 系统时钟
input sdi;                   // spi sdi
input cs;                   // spi cs                                 
input sck;                // spi clk, MAX 25MHz                   
input[7:0] idata1;     // input data1 want to send
input[7:0] idata2;     // input data2 want to send(可根据需要继续添加)
output sdo;             // spi sdo
output  reg[7:0] odata1;       // receive data1 write to cpld(可根据需要继续添加)


/*
**********************************************************************
*/
wire  ReceiveFlag;              // SPI收到8位数据标志
wire  TransEndFlag;           // 发送结束标志
reg  CmdFlag;                    // 命令为1,数据为0    
reg  TransFlag;                   // 告诉SPI发送数据标志,并处于发送状态
reg  RFstRunFlag;              // run once time by once receivceflag
reg[7:0]  CmdStore;          // 保存指令和操作地址
reg[7:0]  SPIData;             // 发送的数据寄存器
wire[7:0]  SPICoder;         // 命令字和操作地址
parameter  CODER0CMD = 8'b11110000,    // 操作指令和操作地址0
      CODER1CMD = 8'b11110001,               // 操作指令和操作地址1
      CODER2CMD = 8'b11110010;               // 操作指令和操作地址2


spi spi1( .rst(rst),.clk(clk),.sdi(sdi),.sdo(sdo),.sck(sck),.cs(cs),
   .OData(SPICoder),.IData(SPIData),
   .ReceiveFlag(ReceiveFlag),.TransFlag(TransFlag),.TransEndFlag(TransEndFlag));

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
1
关闭 站长推荐上一条 /3 下一条