|
本帖最后由 thy110 于 2017-11-20 17:18 编辑
我以114个数据为一组,给stm32发送数据,仿真可以看出数据都发送出去的了,但是接受的数据却不正确,接收的都是114个相同的数据,求助啊
- module SPI_Test(
- input clk,
- input rst_n,
- input SCK,
- input CS,
- input MOSI,
- output MISO,
- input rx,
- output tx);
- reg [7:0] spi_ad [113:0]; //存储发送的ASIC字符
- reg [7:0] txd_data;
- reg [15:0] spi_cnt;
- reg spi_stat;
- always@(CS)
- begin //定义发送的字符
- if(spi_stat == 0) begin
- spi_ad[0]<=65; //存储字符 A
- spi_ad[1]<=68; //存储字符 D
- spi_ad[2]<=49; //存储字符 1
- spi_ad[3]<=58; //存储字符 :
- spi_ad[4]<=0; //存储字符 正负
- spi_ad[5]<=48; //存储字符 个位
- spi_ad[6]<=46; //存储字符 .
- spi_ad[7]<=48; //存储字符 小数点后一位
- spi_ad[8]<=48; //存储字符 小数点后二位
- spi_ad[9]<=48; //存储字符 小数点后三位
- spi_ad[10]<=48; //存储字符 小数点后四位
- spi_ad[11]<=86; //存储字符 V
- spi_ad[12]<=32; //存储字符 空格
- spi_ad[13]<=32; //存储字符 空格
-
- spi_ad[14]<=65; //存储字符 A
- spi_ad[15]<=68; //存储字符 D
- spi_ad[16]<=50; //存储字符 2
- spi_ad[17]<=58; //存储字符 :
- spi_ad[18]<=0; //存储字符 正负
- spi_ad[19]<= 48; //存储字符 个位
- spi_ad[20]<=46; //存储字符 .
- spi_ad[21]<=48; //存储字符 小数点后一位
- spi_ad[22]<=48; //存储字符 小数点后二位
- spi_ad[23]<=48; //存储字符 小数点后三位
- spi_ad[24]<=48; //存储字符 小数点后四位
- spi_ad[25]<=86; //存储字符 V
- spi_ad[26]<=32; //存储字符 空格
- spi_ad[27]<=32; //存储字符 空格
-
- spi_ad[28]<=65; //存储字符 A
- spi_ad[29]<=68; //存储字符 D
- spi_ad[30]<=51; //存储字符 3
- spi_ad[31]<=58; //存储字符 :
- spi_ad[32]<=0; //存储字符 正负
- spi_ad[33]<=48; //存储字符 个位
- spi_ad[34]<=46; //存储字符 .
- spi_ad[35]<=48; //存储字符 小数点后一位
- spi_ad[36]<=48; //存储字符 小数点后二位
- spi_ad[37]<=48; //存储字符 小数点后三位
- spi_ad[38]<=48; //存储字符 小数点后四位
- spi_ad[39]<=86; //存储字符 V
- spi_ad[40]<=32; //存储字符 空格
- spi_ad[41]<=32; //存储字符 空格
-
- spi_ad[42]<=65; //存储字符 A
- spi_ad[43]<=68; //存储字符 D
- spi_ad[44]<=52; //存储字符 4
- spi_ad[45]<=58; //存储字符 :
- spi_ad[46]<=0; //存储字符 正负
- spi_ad[47]<=48; //存储字符 个位
- spi_ad[48]<=46; //存储字符 .
- spi_ad[49]<=48; //存储字符 小数点后一位
- spi_ad[50]<=48; //存储字符 小数点后二位
- spi_ad[51]<=48; //存储字符 小数点后三位
- spi_ad[52]<=48; //存储字符 小数点后四位
- spi_ad[53]<=86; //存储字符 V
- spi_ad[54]<=32; //存储字符 空格
- spi_ad[55]<=32; //存储字符 空格
-
- spi_ad[56]<=65; //存储字符 A
- spi_ad[57]<=68; //存储字符 D
- spi_ad[58]<=53; //存储字符 5
- spi_ad[59]<=58; //存储字符 :
- spi_ad[60]<=0; //存储字符 正负
- spi_ad[61]<=48; //存储字符 个位
- spi_ad[62]<=46; //存储字符 .
- spi_ad[63]<=48; //存储字符 小数点后一位
- spi_ad[64]<=48; //存储字符 小数点后二位
- spi_ad[65]<=48; //存储字符 小数点后三位
- spi_ad[66]<=48; //存储字符 小数点后四位
- spi_ad[67]<=86; //存储字符 V
- spi_ad[68]<=32; //存储字符 空格
- spi_ad[69]<=32; //存储字符 空格
-
- spi_ad[70]<=65; //存储字符 A
- spi_ad[71]<=68; //存储字符 D
- spi_ad[72]<=54; //存储字符 6
- spi_ad[73]<=58; //存储字符 :
- spi_ad[74]<=0; //存储字符 正负
- spi_ad[75]<=48; //存储字符 个位
- spi_ad[76]<=46; //存储字符 .
- spi_ad[77]<=48; //存储字符 小数点后一位
- spi_ad[78]<=48; //存储字符 小数点后二位
- spi_ad[79]<=48; //存储字符 小数点后三位
- spi_ad[80]<=48; //存储字符 小数点后四位
- spi_ad[81]<=86; //存储字符 V
- spi_ad[82]<=32; //存储字符 空格
- spi_ad[83]<=32; //存储字符 空格
- spi_ad[84]<=65; //存储字符 A
- spi_ad[85]<=68; //存储字符 D
- spi_ad[86]<=55; //存储字符 7
- spi_ad[87]<=58; //存储字符 :
- spi_ad[88]<=0; //存储字符 正负
- spi_ad[89]<=48; //存储字符 个位
- spi_ad[90]<=46; //存储字符 .
- spi_ad[91]<=48; //存储字符 小数点后一位
- spi_ad[92]<=48; //存储字符 小数点后二位
- spi_ad[93]<=48; //存储字符 小数点后三位
- spi_ad[94]<=48; //存储字符 小数点后四位
- spi_ad[95]<=86; //存储字符 V
- spi_ad[96]<=32; //存储字符 空格
- spi_ad[97]<=32; //存储字符 空格
- spi_ad[98]<=65; //存储字符 A
- spi_ad[99]<=68; //存储字符 D
- spi_ad[100]<=56; //存储字符 8
- spi_ad[101]<=58; //存储字符 :
- spi_ad[102]<=0; //存储字符 正负
- spi_ad[103]<=48; //存储字符 个位
- spi_ad[104]<=46; //存储字符 .
- spi_ad[105]<=48; //存储字符 小数点后一位
- spi_ad[106]<=48; //存储字符 小数点后二位
- spi_ad[107]<=48; //存储字符 小数点后三位
- spi_ad[108]<=48; //存储字符 小数点后四位
- spi_ad[109]<=86; //存储字符 V
- spi_ad[110]<=32; //存储字符 空格
- spi_ad[111]<=32; //存储字符 空格
- spi_ad[112]<=10; //换行符
- spi_ad[113]<=13; //回车符
- end
- end
- wire CS_n;
- reg CS_r0,CS_r1;
- always@(posedge clk or negedge rst_n)
- begin
- if(!rst_n)
- begin
- CS_r0 <= 1'b0;
- CS_r1 <= 1'b0;
- end
- else
- begin
- CS_r0 <= CS;
- CS_r1 <= CS_r0;
- end
- end
- assign CS_n = (~CS_r0 & CS_r1)? 1'b1:1'b0;
- always@( CS_n )//CS边缘检测下降沿
- begin
- if(!rst_n) begin
- spi_cnt<=0;
- spi_stat <= 0;
- end
- else if(spi_cnt == 114) begin
- spi_cnt <= 0;
- spi_stat <= 0;
- end
- else if(CS_n & !CS )begin
- txd_data <= spi_ad[spi_cnt];
- spi_cnt <= spi_cnt + 1'b1;
- spi_stat <= 1;
- end
- end
-
- wire SCK_n,SCK_p;
- SPI_SCK u1(
- .clk(clk),
- .rst_n(rst_n),
- .SCK(SCK),
- .SCK_n(SCK_n),
- .SCK_p(SCK_p));
- SPI_TX u4(
- .clk(clk),
- .rst_n(rst_n),
- .SCK_n(SCK_n),
- .CS(CS),
- .txd_data(txd_data),
- .MISO(MISO));
- endmodule
-
-
-
复制代码 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
阿莫论坛20周年了!感谢大家的支持与爱护!!
一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。
|