矩阵键盘模块要实现设置CH451的系统参数,接收按键中断信号,发送读取按键键值命令及读取键值,向主处理器发送按键中断和发送按键键值。上电复位之后并延时几个时钟周期后,辅助处理器就发送设定系统参数的命令(010000000010 B)来启动CH451芯片的键盘控制功能,然后等待DOUT信号变为低电平,即产生按键中断请求,FPGA检测到低电平的中断请求后,便立即发送读取按键键值的命令0111B 并从 DOUT引脚读取﹖位按键键值。之后中断输出端口Keyboard_int变为低电平,向主处理器ARM 发送按键中断请求,在时间轴9.035us位置附近,ARM 响应了中断请求,读取按键键值使能信号Keyboard_en变为高电平有效,FPGA就将转换后的16位按键键值送到数据总线上;在+245.0ns位置附近,主处理器读取键值完毕后,释放数据总线和地址总线。
测速模块的程序设计,Encoder_A和Encoder_B是光电编码器输出的A、B两相脉冲信号,计数器子模块ENCODER_TIMER16会在给定时间对Encoder_A和Encoder_B脉冲进行相位鉴别并根据相位鉴别结果进行加或者减计数,Encoder_A的相位超前Encoder_B的相位90°时,即编码器正向旋转,就进行加1计数,Encoder_A的相位落后Encoder_B的相位90°时,即编码器反向旋转,就进行减1计数;然后在给定时间定时到了之后将计数值保存到计数值锁存子模块ENCODER_REG中,并将前一次的计数值覆盖掉,子模块ENCODER_REG接收到ARM发送的读取计数值命令后,便将计数值放到数据总线上。