博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

我要做CPU_3

Posted on 2020-03-18 14:55  沉默改良者  阅读(217)  评论(0编辑  收藏  举报

我要做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等信号的探究。