搜索
bottom↓
回复: 36

菜鸟一枚,奉上一个耗费10个逻辑单元的SPI从机Verilog程序,望高手指正下

[复制链接]

出0入0汤圆

发表于 2010-9-1 16:23:05 | 显示全部楼层 |阅读模式
FPGA的时钟是24M
SPI主机的时钟为16M,没有采用同步设计。直接用异步信号:
才入门不久,SPI已经验证通过,用本模块实现了一个FPGA与MCU之间变量数值的交换协议,稳定性很好,实测通信误码率为0.000000000015
最后加了个CRC校验
module SPI_Slaver(
input [7:0]u8Send, //需要给主机的数据线
output [7:0]u8Recv,//从主机机接收到的数据
output recv_a,     //接收完成信号,高电平有效,对FPGA时钟来说是异步信号
output MISO,
input  MOSI,SCK,CS //CS 是使能信号,低电平有效
);

reg tmpMOSI;
reg [7:0]shiftReg;
reg startFlag;

initial begin
    startFlag<=0;
end
always @(posedge SCK or posedge CS)begin  
    if(CS==1)begin
        startFlag<=0; //高电平复位
    end
    else begin
         if(startFlag==0)begin
              shiftReg[7:0]<=u8Send[7:0];  //在CS低电平后的第一个SCK上升沿锁存需要发送的数据
         end
         else begin
              shiftReg[7:0]<={shiftReg[6:0],tmpMOSI}; //在第2--8个上升沿移位,将下降沿锁存的数据放进移位寄存器
         end
         startFlag<=1'b1;
    end
   
end

always @(negedge SCK)begin
        tmpMOSI=MOSI;    //下降沿锁存信号
end

assign MISO=shiftReg[7];   //MISO引脚时钟对应移位寄存器最高位
assign recv_a=CS;        //异步接收完毕信号,发给FPGA内部的
assign u8Recv[7:0]={shiftReg[6:0],tmpMOSI};  //接收到的数据,送往FPGA内部


endmodule

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2010-9-1 16:27:55 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-9-1 21:26:58 | 显示全部楼层
( ⊙ o ⊙ )啊!

出0入0汤圆

发表于 2010-9-1 21:49:43 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-9-2 00:03:55 | 显示全部楼层
感谢分享

出0入0汤圆

发表于 2010-9-2 15:17:54 | 显示全部楼层
如果SPI主、从设备都是同一时钟域的话,你的代码是可以的。
但一般而言SPI主设备是MCU,作为从设备的FPGA与MCU是不同的时钟域,要面临跨时钟域的问题,可以通过FPGA对输入信号进行过采样解决。
具体参考 http://www.fpga4fun.com/SPI2.html

出0入0汤圆

发表于 2010-9-2 17:14:07 | 显示全部楼层
实测通信误码率为0.000000000015

用什么方法测得的?我也想测测我写的spi slave

出0入0汤圆

 楼主| 发表于 2010-9-3 10:08:41 | 显示全部楼层
回复【6楼】DanielDeng  
-----------------------------------------------------------------------

在这个SPI协议之上还有一个链路层通讯协议。实现FPGA与DSP之间的通讯。其中还配了了一个FPGA上生成CRC的模块,然后DSP上作校验。所以在这么久的运行过程中,记录出错个数和总的通讯量就可以测试误码率了

出0入4汤圆

发表于 2010-9-3 12:43:46 | 显示全部楼层
果断记号

出0入0汤圆

发表于 2010-12-2 09:55:56 | 显示全部楼层
这个学习下。

出0入0汤圆

发表于 2011-3-26 14:29:21 | 显示全部楼层
记号,想用SPI的方式驱动一下ADF4360-0,先看下思路~

出0入0汤圆

发表于 2011-5-28 10:03:49 | 显示全部楼层
采用异步的方式的话,用的是CPLD是不是就不用外接晶振了?
初学者,忘能者指点下,谢谢!

出0入0汤圆

发表于 2011-11-26 17:37:28 | 显示全部楼层
研究下

出0入4汤圆

发表于 2011-11-26 18:41:41 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-11-26 22:15:08 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-1-1 00:18:45 | 显示全部楼层
楼主的做法是OK的,我也用过类似的实现。
CPLD如果再挂个有源晶振,经济上也很不划算。

出0入0汤圆

发表于 2012-1-1 00:21:40 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-1-1 18:38:42 | 显示全部楼层
支持个~

出0入0汤圆

发表于 2012-1-1 18:38:52 | 显示全部楼层
支持个~

出0入4汤圆

发表于 2012-1-10 11:24:14 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-1-12 22:31:42 | 显示全部楼层
回复【19楼】get500wan  
-----------------------------------------------------------------------
这个学习下。

出0入0汤圆

发表于 2012-1-26 19:02:33 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-1-26 20:22:15 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-2-7 13:57:16 | 显示全部楼层
回复【楼主位】zf12862177  
-----------------------------------------------------------------------

一起学习,我也菜鸟!1

出0入0汤圆

发表于 2012-2-8 16:16:37 | 显示全部楼层
phuck

出0入0汤圆

发表于 2012-4-3 20:21:41 | 显示全部楼层
这个是CPOL=0,CPHA=0的SPI吗?

出0入0汤圆

发表于 2012-4-3 22:07:31 | 显示全部楼层
围观一下。

出0入0汤圆

发表于 2012-4-3 22:14:14 | 显示全部楼层
这个学习下。

出0入0汤圆

发表于 2012-4-4 09:41:27 | 显示全部楼层
SPI 10逻辑。。。标记下。。。

出0入0汤圆

发表于 2012-4-4 10:42:11 | 显示全部楼层
很实用  学习一下

出0入0汤圆

发表于 2012-4-6 22:10:23 | 显示全部楼层
我表示我现在对SPI协议 情有独钟

出0入0汤圆

发表于 2012-4-30 19:25:54 | 显示全部楼层
mark mark~

出0入0汤圆

发表于 2012-4-30 19:37:17 | 显示全部楼层
写的不错。学习

出0入0汤圆

发表于 2012-4-30 20:23:51 | 显示全部楼层
我也支持下 程序复制走了 留着学习

出0入0汤圆

发表于 2012-5-8 19:03:48 | 显示全部楼层
MARK!!

出0入0汤圆

发表于 2012-5-8 19:54:00 | 显示全部楼层
学习学习~

出0入0汤圆

发表于 2012-5-9 00:06:59 | 显示全部楼层
mark makr~
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 09:24

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表