在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2147|回复: 0

[求助] 这个测试文件怎么写??

[复制链接]
发表于 2013-8-29 22:07:09 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x




  1. module spi_master(
  2.                         addr,
  3.                         in_data,
  4.                         out_data,
  5.                         wr,
  6.                         rd,
  7.                         cs,
  8.                         clk,
  9.                         miso,
  10.                         mosi,
  11.                         sclk
  12.     );
  13. input[1:0]addr;
  14. input [7:0]in_data;
  15. output [7:0]out_data;
  16. reg [7:0]out_data;
  17. input clk;
  18. input wr;
  19. input rd;
  20. input cs;
  21. inout miso;
  22. inout mosi;
  23. inout sclk;

  24. reg sclk_buffer = 0;
  25. reg mosi_buffer = 0;
  26. reg busy = 0;

  27. reg [7:0]in_buffer = 0;
  28. reg [7:0]out_buffer = 0;
  29. reg [7:0]clkcount = 0;
  30. reg [7:0]clkdiv = 0;
  31. reg [4:0]count = 0;

  32. always@(cs or rd or addr or out_buffer or busy or clkdiv) begin
  33.         out_data = 8'bx;
  34.         if(cs&&rd) begin
  35.                 case(addr)
  36.                         2'b00 : out_data = out_buffer;
  37.                         2'b01 : out_data = {7'b0,busy};
  38.                         2'b10 : out_data = clkdiv;
  39.                         default: out_data = out_data;
  40.                 endcase
  41.         end
  42. end

  43. always@(posedge clk) begin
  44.         if(!busy) begin
  45.                 if(cs&&wr) begin
  46.                         case(addr)
  47.                                 2'b00 : begin
  48.                                         in_buffer <= in_data;
  49.                                         busy <= 1'b1;
  50.                                         end
  51.                                 2'b10 : in_buffer <= clkdiv;
  52.                                 default : in_buffer <= in_buffer;
  53.                         endcase
  54.                 end// end if(cs&&wr);
  55.         end
  56.         else begin
  57.                 clkcount <= clkcount+1;
  58.                 if(clkcount >= clkdiv) begin
  59.                         clkcount <=0;
  60.                        
  61.                         if(count%2 == 0) begin
  62.                                 mosi_buffer <= in_buffer[7];
  63.                                 in_buffer <= in_buffer<<1;
  64.                         end
  65.                        
  66.                         if(count>0 && count<17) begin
  67.                                 sclk_buffer <= ~sclk_buffer;
  68.                         end
  69.                        
  70.                         count <= count+1;
  71.                        
  72.                         if(count > 17) begin
  73.                                 busy <= 0;
  74.                                 count <= 0;
  75.                         end
  76.                 end
  77.         end
  78. end

  79.         always@(posedge sclk_buffer) begin
  80.                 out_buffer = out_buffer<<1;
  81.                 out_buffer[0] = miso;
  82.         end
  83.        
  84.         assign sclk=sclk_buffer;
  85.         assign mosi=mosi_buffer;
  86.        
  87. endmodule



复制代码


这个读功能的测试文件怎么写?写了两个都不对。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

X

小黑屋| 手机版| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-6-20 03:09 , Processed in 0.016390 second(s), 9 queries , Gzip On, MemCached On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表