微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 关于USB芯片68013的同步与异步的理解

关于USB芯片68013的同步与异步的理解

时间:10-02 整理:3721RD 点击:
最近在弄FPGA通过USB传输数据至PC,用到了68013的芯片,使用slaveFIFO模式进行写数据。现在还没有考虑驱动的部分,在同步和异步上的理解,我就有点糊涂了……
只有一个ifclk的接口呀,这个接口是不是读FD的数据的时钟啊?就一个输入时钟,它同步到底是和谁同步?异步是与谁异步?
我理解的意思是:同步就是读和写的速度一样,异步就是不一样,要注意它到底能缓存多少,最终的速率是否满足。我只要给FIFO里面写数据就好,只要不超过芯片手册里的最大传输速度。
看了一些网上写的verilog,表示对他们所表示的各个状态的实现都较难理解。网上说在slrd下沿的时候,进行写数据,我试着写了一个,还没有测试,请各位大神看一下~
always @(posedge ifclk or negedge rst)
begin
        if(!rst)
        begin
                STATE_NUM <= 3'd0;
                u_slcs <= 1'd1;
                u_sloe <= 1'd0;
                u_slwr <= 1'd1;
                u_slrd <= 1'd1;
        end
        else
        begin
                case(STATE_NUM)
               
                ////////////判断控制信号进入1,否则维持///////////
                3'd0:
                begin
                        if(!u_slcs)
                                STATE_NUM <= 3'd1;
                        else
                                STATE_NUM <= 3'd0;
                end
               
                ////////////判断是否为空选择slaveFIFO模式2,否则返回1/////////
                3'd1:
                begin
                        if(u_flagc)
                        begin
                                usb_address <= 2'b10;
                                STATE_NUM <= 3'd2;
                        end
                        else
                                STATE_NUM <= 3'd1;
                end
               
                ///////////判断是否满,若满则维持,若非满则进入3////////////
                3'd2:
                begin
                        if(u_flagb)
                                STATE_NUM <= 3'd3;
                        else
                        begin
                                u_slwr <= 1;
                                STATE_NUM <= 3'd2;
                        end
                end
               
                /////////////时钟下沿写入数据////////////////////
                3'd3:
                begin
                        DATA_OUT <= DATA;
                        u_slwr <= ~u_slwr;
                        STATE_NUM <= 3'd4;
                end
               
                /////////////若无数据则返回0,有则返回1///////////
                3'd4:
                begin
                        u_slwr <= 1;
                        if(DATA == 16'b0)
                                STATE_NUM <= 3'd0;
                        else
                                STATE_NUM <= 3'd1;
                end
               
                default:STATE_NUM <= 3'd0;
               
                endcase
        end

end
小弟刚刚学习FPGA,不知道写的东西有没有问题。对于具体的概念也是一知半解,求大神指条明路!
谢谢~~~

帖子就这样沉了啊

68013里面的51核程序有没有,如果没有的话,就赶紧搞个。

最近在看这块了。想直接用Cypress给的开发包里的内容,目前还没有多少头绪。我想问下,你知道,我前面的FPGA部分有问题吗?
其实,我是比较讨厌做完之后又回来返工的,想做完一块是一块的说……

同步就是在IFCLK时钟沿进行数据读写,SLWR和SLRD是作为使能信号。异步就是在SLWR和SLRD下降沿进行数据读写,不需要IFCLK。同步模式能达到更高的读写速度。

完了。过了好几天再看,再听你的一说。我感觉我写的,就是一坨狗屎。谢谢大神!

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top