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