| 
 | 
 
 
前提: 
1 PS2手柄宽接口的那种 
           PS手柄针脚输出端(面对插头) 
 
         --------------------------------------------------------- 
            PIN 1->| o  o  o | o  o  o | o  o  o | 
         \________________________________/ 
 
2 PS手柄信号 
        PS手柄通讯都是8 bit串行数据最低有效位先行。在PS 手柄总线的所有时码在时钟下降沿都是同步的。传送一个字节的情况如下所示。  
                       |BIT 0|BIT 1|BIT 2|BIT 3|BIT 4|BIT 5|BIT 6|BIT 7| 
            CLOCK -----___---___---___---___---___---___---___---___-----------  
            DATA  -----000000111111222222333333444444555555666666777777-------- 
                          *     *     *     *     *     *     *     * 
            CMND  -----000000111111222222333333444444555555666666777777--------  
        注:        CMND:FPGA端向手柄端发送指令 
                DATA:手柄端向FPGA端发送信号 
 
3 串口收发模块借用《verilog那些事》里串口收发模块 
 
两者异同: 
同:        都是8位有效位,低位先行。 
        上升沿采集信号 
        收发互不干扰 
异:        收发模块时钟同频率,但是不一定同步。 
        串口没有时钟线,PS2需要(FPGA端)提供时钟信号 
 
正式问题: 
        在《verilog那些事》里串口收发模块各自都有BPS模块,但是发送端只有在有数据要发送时BPS才开始计时。接受模块也是在接受到第一位信号时BPS才开始计时的。我想把这两个BPS模块从收发模块中独立出来。用这个模块输出PS2端口的时钟,同时送给两个收发模块。收发模块都有使能信号。不使能时应该不会影响。 
        再加一个控制模块直接接受串口接收模块的8位数据,再发送另一个8位数据给串口发送模块。以实现解读PS2手柄信息。 
 
想请教一下这种想法是否可行,如可行还有那些地方我要注意的也请多多指教。 
另:本人基础薄弱,描述的不清楚请见谅。 
 
 |   
 
 
 
 |