集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 3249|回复: 5

【求助】FPGA与USB 68013芯片的通信读程序,出问题了~

[复制链接]
kanlidy 发表于 2011-8-8 20:26:41 | 显示全部楼层 |阅读模式
module FPGAUSB
(
        // {{ALTERA_ARGS_BEGIN}} DO NOT REMOVE THIS LINE!
        FLAGA, FLAGB, FLAGC, SLOE, SLRD, PKTEND, SLWR, FIFOADR, FLAGD, FD
        // {{ALTERA_ARGS_END}} DO NOT REMOVE THIS LINE!
);
// Port Declaration

        // {{ALTERA_IO_BEGIN}} DO NOT REMOVE THIS LINE!
        input FLAGA;
        input FLAGB;
        input FLAGC;
        output SLOE;
        output SLRD;
        output PKTEND;
        output SLWR;
        output [1:0]FIFOADR;
        inout FLAGD;
        inout [7:0]FD;
        // {{ALTERA_IO_END}} DO NOT REMOVE THIS LINE!
       
    reg [7:0]FD_buf[63:0];//512 buff data
    reg [1:0]FIFO;    // FIFOaddress
    reg state=0;
    reg empty,full,count=0;
    reg SLOE,SLWR,PKTEND,SLRD;


    parameter IDEL=1'b0;

//assign  full=FLAGB;
//assign  empty=FLAGC;



always@(negedge SLOE or negedge SLRD)//case 1,2,3,4
  begin
    case(state)
    IDEL:begin
        SLOE<=1'b1;
        SLWR<=1'b1;       
        PKTEND<=1'b1;       

        state<=1;
         end
    1:begin
                FIFO<=1'b00;// choice EP2 OUT
        state<=2;
      end   //end state 1
    2:begin
        if(!FLAGC)begin state<=3;end
        else state<=2;
      end  //end state 2
    3:begin
        fork
        SLOE<=1'b0;
        SLRD<=1'b0;//read
        join        
    // for(;count<63;count++)//count the 512 byte data
      // begin
       FD_buf[count]<=FD;//read the data into buffer
        count=count+1;
      // end
        fork
        SLOE<=1'b1;
        SLRD<=1'b1;//read reset
        join
        state<=4;      
      end //end state 3
     4:begin
         if(count==64)state<=0;
         else state<=IDEL;

       end //end state 4


     default:state<=0;
     endcase
  end



endmodule


完成的过程是:
外部主控器典型的进程如下:
IDLE:当写事件发生时,转到状态1
状态1:指向OUT FIFO,激活FIFOADR[1:0],转向状态2
状态2:激活SLOE,如果FIFO空标志为“假”(FIFO不空),则转向状态3;否则,停留状态2.
状态3:激活SLOE、SLRD,传送总线采样数据;撤销激活SLRD(指针加1)和SLOE,转向状态4.
状态4:如果有更多的数据要读,则转向状态2;否则转向IDLE


我是verilog学习的新手,请指教啊!!!!
 楼主| kanlidy 发表于 2011-8-8 20:30:07 | 显示全部楼层
在线等~~~在线等~~~在线等~~~在线等~~~
liujilei311 发表于 2011-8-11 08:05:25 | 显示全部楼层
恩,学习一下!!!!!!!!
wushimin6 发表于 2011-8-19 17:06:39 | 显示全部楼层
liujilei311 发表于 2011-8-22 08:24:13 | 显示全部楼层
对verilog不是很熟悉啊,呵呵!!!!!!!!!!
zhouhuaguo 发表于 2011-9-17 08:50:36 | 显示全部楼层
好像你这个写法有点像用c语言的感觉,实际fpga控制68013做usb,是要看时序的。就是SLOE等的低电平宽度很重要的。你仔细看看68013的datasheet吧!或者在网络上找找别人的到吗吧(两年前我有一个放在论坛上--具体哪个论坛我忘记了)! 你自己好好研究一下。
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

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

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2025-6-24 11:08 , Processed in 0.266907 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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