<!-- 本文件由脚本自动转换生成，请勿手动编辑 -->

> **《LKS32MC09x User Manual》CL0可配置逻辑** . 完整目录见 [README.md](README.md)
>
> **声明**：本文档由芯片用户手册自动转换生成，仅供检索与查阅参考。Markdown 格式可被自由编译、修改，本文档不构成正式技术文件，相关内容以凌鸥创芯官方网站正式发布的手册为准。
>
> 南京凌鸥创芯电子有限公司 . (C) 2023, 版权归凌鸥创芯所有 . 机密文件，未经许可不得扩散

# CL0可配置逻辑

## 概述

可配置逻辑单元（Configurable Logic
Unit缩写为CLU），提供了无需CPU干预操作的用户可配置的数字逻辑运算功能。可配置逻辑（CL）模块由四个独立的可配置逻辑单元（CLU）组成，支持用户可编程的异步和同步逻辑运算。CL由于其灵活的逻辑功能，可以应用于多种数字功能实现，如替换系统胶合逻辑，生成特殊波形，或是同步系统事件的触发等。

## 主要特性

CL0主要特性如下:

- 包含四个CLU，具有IO pin与内部逻辑连接
- 每个CLU支持256中不同的组合逻辑功能（与、或、异或、多路复用等），还包含一个用于同步操作的时钟控制D触发器
- 每个CLU可以分别用于同步或者异步逻辑
- CLU可以级联组合实现更复杂的逻辑功能
- 可以配合SPI、I2C或者TIMER与MCPWM进行操作
- 可以用于同步或者触发多个片上资源(ADC, UTIMTER等)
- 异步逻辑输出可以用于唤醒操作

## 功能描述

### 功能框图

如图13-1所示，可配置逻辑CL0主要包括4个独立的可配置逻辑单元CLU。每个CLU都可以独立配置为用户自定义的异步或同步数字逻辑功能，而无需CPU干预。许多内部和外部信号都可以作为各个CLU的输入，CLU的输出也可以连接到IO输出或者直接连接到选中的外设输入。

【图片已删除】为控制知识库体积，本文档不携带图片，相关图示请查阅凌鸥创芯官网发布的正式手册。

图23-1
CL模块顶层功能框图

【图片已删除】为控制知识库体积，本文档不携带图片，相关图示请查阅凌鸥创芯官网发布的正式手册。

图23-2
独立CLU模块功能框图

通过前述及CL模块的功能框图，可见CL的作用是，在无CPU干预下，若干内部和外部信号，可输入到各CLU，通过“LUT（查找表）”的方法，得到自己想要的逻辑值结果，并输出到IO端口或直接用于外围设备的输入。

### 功能描述

#### 配置流程

在使能独立CLU之前，应该先进行功能配置，输入复用选取和输出功能配置。CLU初始化可以参考一下步骤:

1.  选择C0_MX0中到LUT的A与B输入
2.  配置CL0_FN0选择LUT功能
3.  配置CLU的CL0_CF0配置寄存器
4.  如果选择CLU的D触发器输出（OUTPSEL=1），则提前配置RST=1复位D触发的输出到0
5.  配置CL0_IE0使能需要的中断信号。上升沿和下降沿中断分别通过CnFIE和CnRIE位使能
6.  配置CL0_EN0的CnEN使能对应的CLUn，可以同时使能多个CLU
7.  如果需要输出到IO端口，则使能CL0_CF0的对应CnOEN位

#### 输入多路复选器

每个CLU都有两个主要的逻辑输入（A与B）和一个进位输入（C）。A与B输入通过寄存器CL0_MX0的CnMXA和CnMXB进行选择，可以选择各内部和外部信号中的一个作为输入。当另一个CLU的输出被选为输入时，使用的是该CLU的异步输出，级联可以实现更复杂的逻辑功能。

Notes:当采用TIMER溢出作为输入时，一次时钟溢出事件产生为一个系统时钟周期的高电平，其余时间为低电平。

进位输入C是前级CLU的异步输出。例如，CLU1的进位输入C是CLU0的异步输出，CLU0的进位输入C是CLU3的异步输出。

表23-1 CLUnA输入选择

||||||
|---|---|---|---|---|
|CLUnMX.MXA|CLU0A|CLU1A|CLU2A|CLU3A|
|0000|CLU0OUT|CLU0OUT|CLU0OUT|CLU0OUT|
|0001|CLU1OUT|CLU1OUT|CLU1OUT|CLU1OUT|
|0010|CLU2OUT|CLU2OUT|CLU2OUT|CLU2OUT|
|0011|CLU3OUT|CLU3OUT|CLU3OUT|CLU3OUT|
|0100|TIMER0 ch0 ovfl|TIMER0 ch1 ovfl|TIMER2 ch0 ovfl|TIMER2 ch1 ovfl|
|0101|TIMER1 ch0 ovfl|TIMER1 ch1 ovfl|||
|0110|PWM0|PWM2|PWM0|PWM1|
|0111|PWM1|PWM3|PWM2|PWM3|
|1000|P0.0|P0.0|P2.8|P2.8|
|1001|P0.3|P0.2|P1.13|P2.7|
|1010|P0.5|P0.5|P1.15|P1.15|
|1011|P0.7|P0.6|P1.10|P2.0|
|1100|P2.12|P2.12|P2.1|P2.1|
|1101|P0.12|P0.11|P2.4|P2.3|
|1110|P0.14|P0.14|P2.6|P2.6|
|1111|P1.0|P0.15|P2.14|P2.13|

表23-2 CLUnB输入选择

||||||
|---|---|---|---|---|
|CLUnMX.MXB|CLU0B|CLU1B|CLU2B|CLU3B|
|0000|CLU0OUT|CLU0OUT|CLU0OUT|CLU0OUT|
|0001|CLU1OUT|CLU1OUT|CLU1OUT|CLU1OUT|
|0010|CLU2OUT|CLU2OUT|CLU2OUT|CLU2OUT|
|0011|CLU3OUT|CLU3OUT|CLU3OUT|CLU3OUT|
|0100|ADBUSY0|ADBUSY0|PWM1|PWM0|
|0101|CMP0_OUT|CMP1_OUT|PWM3|PWM2|
|0110|PWM3|PWM1|I2CSDA|I2CSCL|
|0111|SPIMOSI|SPIMISO|SPICLK|SPICSN|
|1000|P0.2|P0.3|P3.9|P1.13|
|1001|P0.4|P0.4|P1.14|P1.14|
|1010|P0.6|P0.7|P2.0|P1.10|
|1011|P2.11|P2.11|P1.11|P1.11|
|1100|P0.11|P0.12|P2.3|P2.4|
|1101|P0.13|P0.13|P2.5|P2.5|
|1110|P0.15|P1.0|P2.13|P2.14|
|1111|P2.7|P2.7|P2.15|P2.15|

注:

1.  CLU0OUT、CLU1OUT、CLU2OUT、CLU3OUT分别代表CLU的4个输出端口；
2.  ADBUSY0代表ADC start信号；
3.  PWM0、PWM1、PWM2、PWM3分别代表四个PWM模块的TADC事件触发信号（触发ADC采样）；
4.  CMP0_OUT、CMP1_OUT分别代表比较器CMP0和CMP1的输出信号；
5.  SPIMOSI、SPIMISO、SPICLK、SPICSN分别代表SPI模块的MOSI、MISO、CLK、CS端口；
6.  I2CSDA、I2CSCL分别代表I2C模块的数据信号SDA和时钟信号SCL；
7.  TIMER0 ch0 ovfl、TIMER0 ch1 ovfl、TIMER1 ch0 ovfl、TIMER1 ch1
    ovfl、TIMER2 ch0 ovfl、TIMER2 ch1
    ovfl代表utimer触发ADC采样事件（utimer比较事件或者utimer的捕获事件）。

#### 输出配置

每个CLU都有同步和异步输出，同步输出可以在任意时间通过寄存器CLOUT0输出，CLU输出通过CLUNCF的OUTSEL控制是直接从LUT输出，还是从DFF输出。当CLU关闭时（CnEN中的CLEN0等于0），所有输出都维持在0。

DFF时钟通过CLUnCF的CLKSEL选择，共有四种来源。DFF时钟可通过bit
CLKINV进行翻转。每个CLU有下列四种DFF时钟选择:

1.  CARRY_IN:前级的CLU的进位输出C，第一个CLU使用最后一个CLU的进位；
2.  MXA_INPUT:CLU的A输入，通过寄存器MXA选择；
3.  ALTCLK0:TIMER0/1的比较或者捕获事件
4.  ALTCLK1:TIMER0/1的比较或者捕获事件

表 23-3 CLU时钟/外部信号的时序

||||||||
|---|---|---|---|---|---|---|
|参数|符号|测试条件|Min|Typ|Max|Unit|
|传输延时|tDLY|单个CLU，连接到外部pin|\-|\-|50|ns|
|||单个CLU，内部连接|\-|4|6|ns|
|时钟频率|fCLK|1、2或3个 CLU级联|\-|\-|96|MHz|
|||4个CLU级联|\-|\-|48|MHz|

#### LUT配置

每个CLU的逻辑功能由LUT配置决定，可以通过配置CL0_FN0的CnFNSEL来进行选取。CnFNSEL的每位都被映射到8个多路选择器的输入的一种组合，也就是LUT的输出由A，B与C输入的组合选择。

表23-4 LUT真值表

|||||
|---|---|---|---|
|A 输入|B 输入|C输入|LUT输出|
|0|0|0|FNSEL.0|
|0|0|1|FNSEL.1|
|0|1|0|FNSEL.2|
|0|1|1|FNSEL.3|
|1|0|0|FNSEL.4|
|1|0|1|FNSEL.5|
|1|1|0|FNSEL.6|
|1|1|1|FNSEL.7|

参考上表所示的真值表，使用LUT可以实现三输入的所有逻辑功能。例如，实现与逻辑（A
AND
B），真值表的输出在A与B都为1时才为1，也就是只有FNSEL.7与FNSEL.6为1，所以FNSEL应该被写入11000000b，也就是0xC0.

## 寄存器

### 地址分配

CL0在芯片中的基地址是0x40011800，寄存器列表如下:

表23-5
CL0模块寄存器地址分配

||||
|---|---|---|
|名称|偏移|描述|
|CL0_EN0|0x00|CL0使能寄存器|
|CL0_IE0|0x04|CL0中断使能寄存器|
|CL0_IF0|0x08|CL0中断标志寄存器|
|CL0_OUT0|0x0C|CL0输出寄存器|
|CL0_MX0|0x10|CL0输入多路复选寄存器|
|CL0_FN0|0x14|CL0功能选择寄存器|
|CL0_CF0|0x18|CL0配置寄存器|

### CL0_EN0 CL0使能寄存器

地址: 0x40011800

复位值:0x0

表23-6
CL0_EN0 CL0使能寄存器

|||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0|
|||||||||||||C3EN|C2EN|C1EN|C0EN|
|||||||||||||RW|RW|RW|RW|
|||||||||||||0|0|0|0|

||||
|---|---|---|
|位置|位名称|说明|
|\[31:4\]||未使用|
|\[3\]|C3EN|CLU3使能。默认关闭。0: 关闭1: 使能|
|\[2\]|C2EN|CLU2使能。默认关闭。0: 关闭1: 使能|
|\[1\]|C1EN|CLU1使能。默认关闭。0: 关闭1: 使能|
|\[0\]|C0EN|CLU0使能。默认关闭。0: 关闭1: 使能|

### CL0_IE0 CL0中断使能寄存器

地址: 0x40011804

复位值:0x0

表23-7 CL0_IE0 CL0中断使能寄存器

|||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0|
|||||||||C3RIE|C3FIE|C2RIE|C2FIE|C1RIE|C1FIE|C0RIE|C0FIE|
|||||||||RW|RW|RW|RW|RW|RW|RW|RW|
|||||||||0|0|0|0|0|0|0|0|

||||
|---|---|---|
|位置|位名称|说明|
|\[31:8\]||未使用|
|\[7\]|C3RIE|CLU3上升沿触发中断使能。默认关闭。0: 关闭1: 使能|
|\[6\]|C3FIE|CLU3下降沿触发中断使能。默认关闭。0: 关闭1: 使能|
|\[5\]|C2RIE|CLU2上升沿触发中断使能。默认关闭。0: 关闭1: 使能|
|\[4\]|C2FIE|CLU2下降沿触发中断使能。默认关闭。0: 关闭1: 使能|
|\[3\]|C1RIE|CLU1上升沿触发中断使能。默认关闭。0: 关闭1: 使能|
|\[2\]|C1FIE|CLU1下降沿触发中断使能。默认关闭。0: 关闭1: 使能|
|\[1\]|C0RIE|CLU0上升沿触发中断使能。默认关闭。0: 关闭1: 使能|
|\[0\]|C0FIE|CLU0下降沿触发中断使能。默认关闭。0: 关闭1: 使能|

### CL0_IF0 CL0中断标志寄存器

地址: 0x40011808

复位值:0x0

表23-8 CL0_IF0 CL0中断标志寄存器

|||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0|
|||||||||C3RIF|C3FIF|C2RIF|C2FIF|C1RIF|C1FIF|C0RIF|C0FIF|
|||||||||RW|RW|RW|RW|RW|RW|RW|RW|
|||||||||0|0|0|0|0|0|0|0|

||||
|---|---|---|
|位置|位名称|说明|
|\[31:8\]||未使用|
|\[7\]|C3RIF|CLU3上升沿中断标志位。中断标志高有效，写1清零。|
|\[6\]|C3FIF|CLU3下降沿中断标志位。中断标志高有效，写1清零。|
|\[5\]|C2RIF|CLU2上升沿中断标志位。中断标志高有效，写1清零。|
|\[4\]|C2FIF|CLU2下降沿中断标志位。中断标志高有效，写1清零。|
|\[3\]|C1RIF|CLU1上升沿中断标志位。中断标志高有效，写1清零。|
|\[2\]|C1FIF|CLU1下降沿中断标志位。中断标志高有效，写1清零。|
|\[1\]|C0RIF|CLU0上升沿中断标志位。中断标志高有效，写1清零。|
|\[0\]|C0FIF|CLU0下降沿中断标志位。中断标志高有效，写1清零。|

### CL0_OUT0 CL0输出寄存器

地址: 0x4001180C

复位值:0x0

表23-9 CL0_OUT0 CL0输出寄存器

|||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0|
|||||||||||||C3OUT|C2OUT|C1OUT|C0OUT|
|||||||||||||R|R|R|R|
|||||||||||||0|0|0|0|

||||
|---|---|---|
|位置|位名称|说明|
|\[31:4\]||未使用|
|\[3\]|C3OUT|CLU3输出状态，与系统时钟同步。|
|\[2\]|C2OUT|CLU2输出状态，与系统时钟同步。|
|\[1\]|C1OUT|CLU1输出状态，与系统时钟同步。|
|\[0\]|C0OUT|CLU0输出状态，与系统时钟同步。|

### CL0_MX0 CL0输入多路复选寄存器

地址: 0x40011810

复位值:0x0

表23-10 CL0_MX0 CL0输入多路复选寄存器

|||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|
|C3MXA||||C3MXB||||C2MXA||||C2MXB||||
|RW||||RW||||RW||||RW||||
|0x0||||0x0||||0x0||||0x0||||
|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0|
|C1MXA||||C1MXB||||C0MXA||||C0MXB||||
|RW||||RW||||RW||||RW||||
|0x0||||0x0||||0x0||||0x0||||

||||
|---|---|---|
|位置|位名称|说明|
|\[31:28\]|C3MXA|CLU3 A输入多路复用选择|
|\[27:24\]|C3MXB|CLU3 B输入多路复用选择|
|\[23:20\]|C2MXA|CLU2 A输入多路复用选择|
|\[19:16\]|C2MXB|CLU2 B输入多路复用选择|
|\[15:12\]|C1MXA|CLU1 A输入多路复用选择|
|\[11:8\]|C1MXB|CLU1 B输入多路复用选择|
|\[7:4\]|C0MXA|CLU0 A输入多路复用选择|
|\[3:0\]|C0MXB|CLU0 B输入多路复用选择|

### CL0_FN0 CL0功能选择寄存器

地址: 0x40011814

复位值:0x0

表23-11 CL0_FN0 CL0功能选择寄存器

|||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|
|C3FN||||||||C2FN||||||||
|RW||||||||RW||||||||
|0x00||||||||0x00||||||||
|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0|
|C1FN||||||||C0FN||||||||
|RW||||||||RW||||||||
|0x00||||||||0x00||||||||

||||
|---|---|---|
|位置|位名称|说明|
|\[31:24\]|C3FN|CLU3 查找表功能选择。|
|\[23:16\]|C2FN|CLU2 查找表功能选择。|
|\[15:8\]|C1FN|CLU1查找表功能选择。|
|\[7:0\]|C0FN|CLU0查找表功能选择。|

### CL0_CF0 CL0配置寄存器

地址: 0x40011818

复位值:0x0

表23-12 CL0_CF0 CL0配置寄存器

||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|31||30||29|28||27||26||25|24|23||22||21||20|19||18||17||16|
|C3OUTSEL|C3OEN|||||C3RST||C3CLKINV||C3CLKSEL||||C2OUTSEL||C2OEN|||||C2RST||C2CLKINV||C2CLKSEL||
|RW|RW|||||RW||RW||RW||||RW||RW|||||RW||RW||RW||
|0|0|||||0||0||0x0||||0||0|||||0||0||0x0||
|15||14||13|12||11||10||9|8|7||6||5||4|3||2||1||0|
|C1OUTSEL|C1OEN|||||C1RST||C1CLKINV||C1CLKSEL||||C0OUTSEL||C0OEN|||||C0RST||C0CLKINV||C0CLKSEL||
|RW|RW|||||RW||RW||RW||||RW||RW|||||RW||RW||RW||
|0|0|||||0||0||0x0||||0||0|||||0||0||0x0||

||||
|---|---|---|
|位置|位名称|说明|
|\[31\]|C3OUTSEL|CLU3输出选取0: D触发器输出1: LUT输出|
|\[30\]|C3OEN|CLU3输出使能。默认关闭。0: 关闭1: 使能|
|\[29:28\]||未使用|
|\[27\]|C3RST|CLU3 D触发器复位。该位写1复位。读取恒为0。|
|\[26\]|C3CLKINV|CLU3 D触发器时钟电平反向。0: 关闭1: 使能|
|\[25:24\]|C3CLKSEL|CLU3 D触发器时钟选择。0x0: 进位输入0x1: MXA输入0x2: TIMER1比较/捕获事件00x3: TIMER0比较/捕获事件0|
|\[23\]|C2OUTSEL|CLU2输出选取0: D触发器输出1: LUT输出|
|\[22\]|C2OEN|CLU2输出使能。默认关闭。0: 关闭1: 使能|
|\[21:20\]||未使用|
|\[19\]|C2RST|CLU2 D触发器复位。该位写1复位。读取恒为0。|
|\[18\]|C2CLKINV|CLU2 D触发器时钟电平反向。0: 关闭1: 使能|
|\[17:16\]|C2CLKSEL|CLU2 D触发器时钟选择 。0x0: 进位输入0x1: MXA输入0x2: TIMER0比较/捕获事件10x3: TIMER1比较/捕获事件1|
|\[15\]|C1OUTSEL|CLU1输出选取0: D触发器输出1: LUT输出|
|\[14\]|C1OEN|CLU1输出使能。默认关闭。0: 关闭1: 使能|
|\[13:12\]||未使用|
|\[11\]|C1RST|CLU1 D触发器复位。该位写1复位。读取恒为0。|
|\[10\]|C1CLKINV|CLU1 D触发器时钟电平反向。0: 关闭1: 使能|
|\[9:8\]|C1CLKSEL|CLU1 D触发器时钟选择 。0x0: 进位输入0x1: MXA输入0x2: TIMER0比较/捕获事件00x3: TIMER1比较/捕获事件0|
|\[7\]|C0OUTSEL|CLU0输出选取0: D触发器输出1: LUT输出|
|\[6\]|C0OEN|CLU0输出使能。默认关闭。0: 关闭1: 使能|
|\[5:4\]||未使用|
|\[3\]|C0RST|CLU0 D触发器复位。该位写1复位。读取恒为0。|
|\[2\]|C0CLKINV|CLU0 D触发器时钟电平反向。0: 关闭1: 使能|
|\[1:0\]|C0CLKSEL|CLU0 D触发器时钟选择 。0x0: 进位输入0x1: MXA输入0x2: TIMER1比较/捕获事件10x3: TIMER0比较/捕获事件1|

