我要做CPU_3

时间:2020-03-18 15:35:11   收藏:0   阅读:51

我要做CPU_3

1.中断优先级同步信号

此同步信号和一个叫GPIO_DEBOUNCE_EN的宏定义有关系,如果没有使能,前端gpio接收到大数据直接传入int_level_sync_in,如果宏定义使能,则int_level_sync_in的每一位是分开控制的,并且和一个debounce_d2的寄存器有关系。

 技术分享图片

技术分享图片

 

 2.generate_if语句

再进行下一步之前,我们先要学习generate_if语句的语法。generate_for用于复制模块,而generate_if则是根据模块的参数(必须是常量)作为条件判断,来产生满足条件的电路。相当于判断语句。

 技术分享图片

 

接下来我们会分析一个很大的generate_if语句块。

如果消抖宏定义开启,将执行SUPPORT_DEBOUNCE_PROC块语句。

技术分享图片

 

 如果宏定义未开启,则执行NO_SUPPORT_DEBOUNCE_PROC块语句。

 技术分享图片

 

 技术分享图片

 

如果开启了宏定义:

首先消抖时钟有一个复位信号,复位期间,缓存输入数据的寄存器会清零。

 技术分享图片

 

 输入数据直接缓存在gpio_rx_data_int_tmp寄存器中。

 技术分享图片

 

 不太明白为什么要这么做一个复位信号,暂且就认为是对输入数据的消抖处理吧,等9700K来了再做仿真吧。

 技术分享图片

 

 以下是对其它bit数据位相同的操作。

 技术分享图片

 

 技术分享图片

 

 技术分享图片

 

 将得到的debounce_d1再打一拍,便完成了端口数据的采集。

 技术分享图片

 

 本文除了要完成对消抖模块的仿真外,接下来还需要对dbclk,dbclk_rstn,scan_mode等信号的探究。

原文:https://www.cnblogs.com/chensimin1990/p/12517406.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!