前提:
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手柄信息。
想请教一下这种想法是否可行,如可行还有那些地方我要注意的也请多多指教。
另:本人基础薄弱,描述的不清楚请见谅。
|