键盘显示电路

2019-06-05  本文已影响0人  萍水间人

简要的分析一下原理:

键盘采用的是PS2协议

clkin信号是检测键盘是否按下的,rst是复位信号
所以

    always @(posedge clkin)
    begin
        if(!rst) clk1 <= kbclk;
        else begin
            clk1 <= 1;
        end
    end

input clkin, kbdata, kbclk; //分别是键盘同步脉冲,键盘按下的数据和键盘被按下发出的脉冲

PS/2鼠标和键盘履行一种双向同步串行协议
换句话说,每次数据线上发送一位数据并且每在时钟线上发一个脉冲就被读入
每位在时钟的下降沿被主机读入

在这个实验中
kbdata是00111100011

注意是高位在前

每次在时钟的上升沿存入数据,在时钟的下降沿写入数据

经过我的分析,上面那个波形是kbclk,下面那个是kbdata

    always @(posedge clkin)
    begin
        if(!rst) clk1 <= kbclk;
        else begin
            clk1 <= 1;
        end
    end

如果复位信号没有被按下,clk1就是kbclk

    always @(negedge clk1)
    begin
        m[9:0] <= {kbdata, s[8:1]};
    end

    always @(posedge clk1)
    begin
        s <= m;
    end

通过kbclk去读取kbdata的数据,下降沿写入,上升沿存起来,然后不断地移位

就像这样不断地移位


最后判断一下是不是3

    always @(q)
    begin
        if(s[7:0] == 8'b0001110)
        begin
            jgout <= 4'b1010;
            q = 1;
        end
        else begin
            jgout <= 4'b1011;
            q = 0;
        end
    end

至于最后的实验任务,就是将输入和判断修改一下就行了

这样就能圆满的完成任务了

上一篇 下一篇

猜你喜欢

热点阅读