Microchip 现在提供一款基于闪存的微控制器,带有集成的可编程逻辑块(CLB)。
该系列中的器件具有相同类型和数量的外设,但外部 I/O 引脚数量有所不同,具体取决于封装。十多年来,Microchip 在其微控制器中引入了一种称为可配置逻辑单元 (CLC) 的可编程逻辑外设。与早期 Microchip PIC 和 AVR 微控制器中集成的 CLC 相比,PIC16F13145 系列中的 CLB 是一个更大、更复杂的可编程逻辑块,我怀疑我们可能会在未来的 PIC16 世代中看到 CLB 变得更大。为了向后兼容,PIC16F13145 微控制器还集成了四个 CLC。
在深入研究 PIC16F13145 器件的复杂内部结构之前,我认为解释如何使用 CLB 并提供一些示例使用非常重要,因为理解如何配对低端微处理器内核在 8 上运行可能有些困难。每秒百万条指令,带有一小块 32-LUT 可编程逻辑块,在某种程度上比任何一个组件本身都更有用。当 PIC16F13145 微控制器的 CPU 对于执行任务而言速度太慢,或者当您需要某种形式的简单并行处理超出微控制器的多任务处理能力时,CLB 可以方便地实现少量硬件级实时处理。
此类应用是我们最初开始使用 FPGA 的基础,Microchip 现在已将微型 FPGA(尽管比旧 CLC 更大)移植到其微控制器子系列之一中。您可以使用 CLB 来实现状态机或“高速”外设,例如软件驱动的信号多路复用器、计数器、正交解码器、步进电机控制器或高速 PWM(脉宽调制器)。CLB可以在CPU处于睡眠模式时做出逻辑决策,这可以降低系统的整体功耗。CLB 的输出可以驱动外部设备引脚或微控制器其他外围设备的输入。
CLB 本身看起来非常像 FPGA 中的可编程逻辑结构。构成 CLB 的 32 个基本逻辑元件 (BLE) 与第一款 FPGA 中的逻辑单元非常相似:1985 年推出的 Xilinx XC2064。每个 BLE 由一个 4 输入 LUT 和一个 D 触发器组成。宽多路复用器为 16 个输入选择锁存器提供信号,然后使用从外部输入引脚、内部寄存器的位以及内部外设的输出引脚提取的 40 个不同输入信号之一来驱动 CLB 的 LUT 输入。16 个输入选择锁存器的输出均馈入可编程边沿检测器。这些边沿检测器默认由正边沿触发,但可以编程为由负边沿触发或完全旁路。另外八个多路复用器将八个 CLB 输出位路由到外部引脚、内部寄存器或内部外围设备的输入。例如,CLB 还包含一个 3 位硬件计数器,以帮助使用 CLB 构建状态机。
Microchip 的文档没有讨论 CLB 的内部接线、开关矩阵或其配置位。你不需要了解他们。这些细节无意侵犯设计师的意识。相反,MPLAB 代码配置器 (MCC)(该公司 MPLAB X 集成开发环境 (IDE) 软件中的免费软件插件)根据设计人员的原理图处理 CLB 配置详细信息。您可以使用 MPLAB IDE 中集成的原理图编辑器为 PIC16F13145 的 CLB 创建设计。
所有 FPGA 设计最初都采用原理图捕获,直到 FPGA 变得太大且复杂,无法实现原理图。20 世纪 90 年代初,随着 FPGA 变得越来越大,Verilog 或 VHDL 中的 HDL 编码开始取代原理图输入。我的好朋友 Robert Bielby 回忆道,到 2000 年代初,基于文本的分层 HDL 描述已在很大程度上取代了 FPGA 设计的原理图输入,当时 FPGA 的最大容量已经通过数千个 LUT 进行了测量。(Bielby 在 Altera 和 Xilinx 的 FPGA 业务中工作了大约四分之一个世纪。很少有工程师能记得设计师何时使用原理图定义 FPGA。但是,Bielby 和我记得。)
Bielby 记得见过的最大的原理图设计需要 30 多张 D 尺寸的纸。对于原理图来说这太大了。Microchip 基于原理图的 CLB 设计方法让人回想起电子行业遥远的时代,但它仍然完全适合具有 32 个 LUT 的 FPGA。PIC16F13145 微控制器的 32-LUT CLB 非常简单,只需输入原理图即可。(出于好奇,我问你:你见过的最大的FPGA设计原理图是多少?请在评论区留下你的答案。)
CLB 的原理图条目使用基本符号,例如 2、3 和 4 输入逻辑门、D 或 JK 触发器、2 或 4 输入多路复用器以及简单的整数常量。(您可能想拿出 Don Lancaster 的TTL Cookbook来了解一些长期被遗忘的设计秘诀。)还可以直接使用 CLB 的 4 输入查找表,这是其基本逻辑元素。一些微控制器的硬化外设也可以包含在设计中,以便 CLB 可以与那些片上外设进行交互。CLB 还可以通过寄存器接口与微控制器的 CPU 交互,软件可访问的输入和输出寄存器在原理图上显示为位级输入和输出。
|