HPM6200

一、HPM6200 系列 PLA 整体结构

HPM6200 系列的 UM 中带有 PLA 的结构简图。为了方便大家把握整体结构,我也绘制了一个稍微更详细的结构图,将 PLA 外设中的大部分元素都展示出来,并给出了单个通道内的具体结构。

1.png

从总体来看,PLA 外设拥有 8 输入、8 反馈、8 输出,其中 8 输入、8 反馈是内部的 8 个通道共享,8 输出则是每个通道使用一个。输入、输出均连接到 TRGM 外设,再通过 TRGM 连接到定时器、编码器、外部引脚等地方。需要注意的是,PLA 的 8 输入、8 输出并非全部都能引出至外部引脚中。每个 PLA 外设都连接到一个指定的 TRGM 外设,而每个 TRGM 外设最多仅可连接 12 个外部引脚,同时 TRGM 还可能有其他信号需要接到外部引脚中,如果想要使用更多外部引脚,则还需要使用 TRGM 间连接等方式。因此,在设计 PLA 程序时需要尽可能提前考虑 I/O 安排的问题。

每个 PLA 外设由一个滤波器 FILTER1 和 8 个通道组成,FILTER1 对输入和反馈信号进行滤波后,宽度为 16bit 的信号将同时输入到 8 个通道之中(这个扇出也挺惊人的)。每个通道的输出宽度均只有 1bit,8 个通道合并组成的 8bit 就是 PLA 外设的输出。下面我们将分别对 PLA 滤波器和单个通道进行介绍。

二、PLA 外设中的滤波器

和我们之前介绍过的 PLA 结构相比,HPM6200 系列的 PLA 最大的特点就是多出了一些滤波器。每个 PLA 外设都有一个 FILTER1 滤波器,8 个通道中每个通道还各有一个 FILTER2 滤波器和 FILTER3 滤波器。目前,文档中并没有向我们介绍这些滤波器的设计目的,不过我们也不难从其功能中窥探一二。无论是 FILTER 1, 2 还是 3,他们的功能基本一致:将输入信号经过同步、边沿检测、软件注入和扩展滤波四个环节后输出。

1. 同步

文档中并没有告诉我们同步功能的具体实现方式,不过在这一段描述里面,我们可以大致猜测出很多信息:

FILTER_SYNC_LEVEL 位选择同步器级数,清 0 时为 2 级同步,置 1 时为 3 级同步。根据该位的设置,同步器会将信号延时 2 个或者 3 个时钟周期。

2级、3 级同步可选,听上去就与跨时钟域处理中的同步器很像。比较了解 FPGA 或 IC 设计的朋友知道,同步器是减少亚稳态对逻辑电路影响的一个常用措施,PLA 外设可以接受外部输入的信号,自然也算是一种“跨时钟域”传递信号的过程。同时,增加同步功能还有利于避免出现组合逻辑电路的竞争-冒险,毕竟 FPGA 和 CPLD 开发时有 EDA (尽管 EDA 也不完全可靠)工具帮忙看着,我们在和 PLA 玩耍的时候就没那么好的条件了。因此我们不妨猜测同步功能实际上就是使用 2/3 级触发器构成的同步器。

2. 边沿检测

这一功能很好理解,将边沿转为脉冲,此处不再赘述。

3. 软件注入

这一功能也很好理解:强制将输出设置为高电平或低电平。实际上各逻辑门前的四选一 MUX 也能实现类似的功能,这一功能更多是为可配置触发器 CFF 或者是降低配置复杂度而生的。

4. 扩展滤波

扩展滤波要比上面三个功能复杂得多,文档也并没有讲得特别清楚,下面我将结合实际例子,分别介绍它的四个滤波类型效果。

在开始之前,我们首先要了解 PLA 外设的时钟。PLA 外设挂载在 AHB/APB 总线下,因此也受在 AHB/APB 时钟(默认 200MHz)驱动。在上文提到的同步器同步周期数量中,2/3 级同步就是指的 AHB/APB 时钟的 2/3 个周期。扩展滤波功能最高支持 65535 周期的扩展,对应的 AHB/APB 时钟周期数也为 65535 周期,单个周期的时间为 5ns,这在我们后续的计算中会常常用到。对于 hpm_sdk v1.2 以前的版本,周期数配置部分存在一个小 bug,需在代码中将计算出来的周期数乘二。

(1)输入高电平扩展

这一个模式相对比较好理解:扩展高电平的长度,也就是在输入信号变为低电平以后,输出信号仍会保持高电平,时间为设定的周期数。下图给出了一个例子。输入信号是周期为 80μs,占空比 50% 的 PWM 信号,滤波器设置为输入高电平拓展,周期数为 2000,输出信号较输入信号延迟10μs 变为低电平。

2.png

(2)输入低电平扩展

这一个模式正好与上一个模式相反。下图输入信号仍是周期为 80μs,占空比 50% 的 PWM 信号,滤波器设置为输入低电平拓展,周期数为 2000,输出信号较输入信号延迟 10μs 变为高电平。

5.png

(3)输出状态扩展

这一个模式可以看作是以上两种模式的加和:既延长低电平时间,也延长高电平时间。输入信号发生变化时,输出信号将先在设定的周期数内维持现有状态,结束后跟随输入信号变化。这一模式可以起到两个效果,一是将脉冲宽度小于设定周期数的脉冲全部过滤掉,二是将脉冲宽度大于设定周期数的脉冲延迟设定周期后输出。

下图前半段输入信号是一个脉冲宽度为 40μs 的 PWM 波,输出信号对比输入信号延迟了 10μs;在后半段将输入信号和输出信号对比,则可以发现所有宽度不大于 10μs 的波形都被过滤掉了。

4.png


(4)输入跳变扩展

这一模式下输出信号跟随输入信号变化,但是当输出信号发生过跳变以后,在设定周期数的时间内,输出信号将保持不变,随后输出信号继续跟随输入信号的变化。

下图中前半段滤波器设置的周期数为 2000,对应 10μs 的时间,因此对于半周期 20μs 的 PWM 信号不会产生任何影响;后半段滤波器设置的周期数为 6000,对应 30μs 时间,因此在输入信号从高电平跳变为低电平以后,输出信号还会继续保持高电平直至 30μs 结束。

5.png

三、PLA 外设通道结构

1. 与- 或阵列

每个通道的 16 信号输入会分别接入到 8 个 16 输入与门中,对单个输出信号最高支持 8 个最小项相加(8 个与门),并可生成 7 个输出信号(7 个或门)。每个逻辑门的输入端都有一个四选一 MUX,可选逻辑 1、逻辑 0、原信号和原信号取反四种输入。

2. 可配置触发器

CFF 可被配置为 D 触发器、双边沿 D 触发器、JK 触发器、T 触发器、锁存器、运算器和直接输出信号这几种功能。CFF 的输出即为其所在通道的输出,输出信号宽度 1bit,输入信号宽度则为 7bit,CFF 配置为各类触发器时,触发器的使能、置位、同步/异步复位、时钟等信号均来自于 7bit 宽度的输入信号,具体的分配表可见 UM 文档。除了使用输入信号以外,CFF 还可以使用 AHB/APB 的时钟。

四、如何使用 HPM_SDK 中的PLA驱动

在之前介绍的各种含有 PLA 的芯片基本都会配置对应的 EDA 工具,用户一般可以使用 verilog 编程或者图形化界面编程,由 EDA 工具生成比特流。比如 PSoC 芯片用户可以使用图形化界面编辑状态机的状态转移条件,再由软件完成后端的处理。HPM6200 的 PLA 则没有使用这种开发方式,而是将所有的可配置项均以寄存器的方式暴露给 CPU,CPU 设置好对应的寄存器以后,PLA 即可开始工作。

1. FILTER

滤波器的可配置项非常多,包括是否同步、是否启用边沿检测、是否软件注入等一系列内容,不过最关键的其实是准确把握配置的数量。PLA 中有 1 个 FILTER1、8 个 FILTER2 和 8 个 FILTER3,FILTER1/2/3 中分别有 16/8/7 个信号,每一个信号都可以独立设置上述介绍过的所有滤波功能,也就是共有 136 个信号,很容易错配、漏配。因此,除了所有通道共用的 FILTER1 单独配置以外,FILTER2/3 建议和它们所在的通道一同配置,避免混淆的同时,如果部分通道没有使用,也就不需要对它们的 FILTER2/3 进行配置了。

6.jpg

滤波器的配置结构体是一个位域结构体,使用四个字节保存一个信号的滤波选项,其每个成员的功能结合手册也非常容易理解,注意,配置结构体里面并没有任何关于该配置位于哪个通道、哪个滤波器等位置的信息。结构体填充完成以后,则需要使用以下几个函数完成设置:

7.jpg

这里面实际上有不少容易踩坑的地方。例如 FILTER2/3 都只有一个函数,而 FILTER1 有 in/out 两个函数。实际上 in/out 两个函数分别负责 FILTER1 16 个信号里面前 8 个和后 8 个信号的配置,原因大概是前 8 个是 PLA 的输入信号,后 8 个则是 PLA 的输出信号反馈回来的。

刚刚提到的滤波器配置结构体里面并没有关于位置的信息,因此这些信息要以参数的形式提供给设置函数。以在通道 3 的 FILTER2 为例,使用 pla_set_filter2() 时不仅要写明通道 3,还要指出是 FILTER2 8 个信号中的具体哪一个信号。而 SDK 中通道参数和信号参数分别叫 chn 和 filter2_chn,使用时一定要注意区分两者之间的差别。

2. 与门

16 输入与门本身只有一个可配置的内容:各输入信号的 MUX 选项。不过同样需要注意数量和位置的问题。8 个通道里面,每个通道有 8 个与门,每个与门又有 16 个 MUX。当然,除了没有使用的通道无需配置以外,部分没有使用的与门也可以不进行设置,默认状态下与门将输出低电平。

8.jpg

与门的配置结构体是 pla_aoi_16to8_chn_cfg,可以对一个与门进行配置,记得不要被它名字里面那个 chn 给欺骗了。结构体里面有 pla channel 和 aoi_16to8 channel 两个“通道”成员,一个指的是 PLA 的通道,另一个则是指 8 个与门的编号。个人认为这样设计其实容易混淆,可以在命名方面更加有区分度一些。

一个与门中有 16 个 MUX,因此 pla_aoi_16to8_chn_cfg 里面有长度为 16 的 MUX 配置结构体 pla_aoi_16to8_cfg_unit_t 数组。MUX 配置结构体的 signal 成员是信号的编号;op 成员的四个选项对应 MUX 的四个选项,对应关系在上面的代码注释中给出。

最后我们需要使用以下函数对一个与门进行配置。

9.jpg

3. 或门

或门的代码和注意事项和与门大同小异,数量上一个通道有 7 个或门,每个或门有 8 个 MUX,比与门会少不少,其余部分基本一致,参照使用即可。

10.jpg

4. 可配置触发器

CFF 可配置的内容并不多,主要就是功能选择和时钟源,具体情况可参考源代码。需要注意的是触发器的同步复位、同步置位、异步复位、异步置位等信号有的是高电平有效,有的则是低电平有效,且有优先级顺序,使用时需要对照手册仔细调整。

11.jpg

5. 使能 PLA

在完成上述全部配置完成以后,还需要对每一个通道进行使能。

在没有使能的情况下,PLA 的寄存器可以作为 1KB 的 APB SRAM 使用。

12.jpg

五、一个简单的例子:同步八进制计数器

1. 概述

在前面章节的基础上,我们将实战使用 PLA 构建一个经典的同步时序逻辑电路:同步八进制计数器。为了简化问题让大家更容易理解,我们要构建的计数器只会计数,没有复位、没有使能、没有置数,长得更像是个分频器,它的电路结构如下所示:

13.png

有了电路图,下一步就是将电路结构转换为 PLA 的配置代码。不过,由于 PLA 是与或结构,我们不妨进一步直接将使用到的与门、或门和各种信号都绘制出来,在编码时将会更加方便。

14.png

对照上图,我们可以提炼出以下信息:

· 此电路使用了 3 个 PLA 通道,每个通道的 CFF 均配置为 T 触发器(图上是 JK,实际功能是 T)

· 触发器时钟使用外部时钟PLA OUT0\OUT1\OUT2 分别作为计数器 D2\D1\D3 的输出

· OUT1\OUT2 将作为反馈信号进入通道 1 和 通道 2

2. 工程准备

本部分包括新建工程、使用 GPTMR 产生 1M PWM 作为时钟的代码,本文不打算讨论这一部分内容,读者可以参考 HPM_SDK 中的其他例程了解。为了区分三个通道的设置代码,在 main 函数前声明了三个通道的配置函数。

15.jpg


16.jpg

17.jpg

3. TRGM 与 I/O

PLA 并没有专属于自己的输入输出引脚,和其他增强运动控制系统外设一样,所有输入输出信号都要通过 TRGM 处理。因此,这里的代码将 GPTMR0 CH2 的 PWM 输出引入到了 PLA0 IN0 中,将 PLA0 OUT0/1/2 输出到三个外部引脚中。为了方便对比时钟波形和计数器输出,还将 GPTMR CH2 的 PWM 也输出到外部引脚中。





18.jpg

19.jpg

20.jpg

21.jpg

22.jpg

4. FILTER1

FILTER1 并没有特别的功能需求,因此我们只需要开启同步功能即可。

23.jpg

5. 通道 0

来到通道 0 的配置函数,首先声明与门阵列、或门阵列和两个滤波器的配置结构体变量。

24.jpg

通道 0 使用了两个与门。第一个与门根据两个反馈信号相与生成 T 触发器的 T 信号,先将它的全部 MUX 设为输出逻辑 1,再将反馈通道对应的 9、10 号 MUX 修改为输出原信号。第二个与门只需要输出 PWM 时钟信号,因此只设置一个 MUX 输出原信号,其余全部设置输出逻辑 1。



25.jpg

26.jpg

27.jpg

FILTER2 同样只需要设置同步。

28.jpg

通道 0 使用了两个或门。第一个或门需要输出与第一个与门完全相同的信号,因此 0 号 MUX 设置输出原信号,其余 MUX 输出逻辑 0(注意,没有使用的信号 MUX,一般与门设置输出逻辑 1,或门设置输出逻辑 0),第二个与门也基本一致。



29.jpg

30.jpg

31.jpg

FILTER3 同样设置信号同步,不过不要忘了 FILTER3 同时也输出触发器的同步异步复位置位,我们这个电路没有相关功能,因此全部根据手册设置为固定值即可。如果要使用这些功能,则需要另外构建他们的控制逻辑函数。


32.jpg

33.jpg

最后是 CFF 并使能通道。

34.jpg

其余两个通道配置过程大同小异,就不再复制粘贴那么多次了,完整的代码可在先楫社区中获取。最终的效果如下图所示。

35.png

六、结 语

通过介绍,相信大家对 PLA 已经有了一个较为全面的了解。在 6200 系列刚推出时,许多开发者非常关注的一点就是 PLA 外设能不能当作 FPGA 使用,对此,我个人的看法是“能,但不完全能”。PLA 拥有完备的逻辑结构,但是其资源数量注定只适合小型逻辑使用,尤其是触发器资源的缺乏,使得 PLA 很难单独构建稍复杂的时序逻辑电路。因此我们在开发 PLA 程序之前,对资源数量要把控地比较准确,以免做无用功。

  • 除了底层资源的限制,个人认为,使用方式上 PLA 也有其遗憾之处:

  • 重复的配置代码相当多,开发效率不高,写代码时容易发生错误

  • 无法对内部信号进行调试,对复杂逻辑调试困难

“牵一发而动全身”,难以通过模块化设计等方式复用现有资料

基于以上原因,我认为图形化配置,程序自动生成配置代码将会是 PLA 极好的开发方式:PLA 配置项繁多但并不复杂,代码由机器生成非常合适;图形化配置的方式降低了开发者编写大量重复代码时出错的可能性,还可以通过抽象出电路图的方式协助开发者调试;甚至还可以以此为基础造出 PLA 的模拟器。

当然,即使没有这些,PLA 也仍不失为构建简单逻辑的好工具,也期待有更多开发者给出他们使用 PLA 的姿势与心得,共同学习共同进步。

36.png

来源:先楫半导体HPMicro

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 28

2023年2月17日,高性能嵌入式解决方案领导厂商上海先楫半导体(HPMicro Semiconductor Co., LTD.) 发布全新的通用微控制器HPM6200系列。该系列产品进一步完善先楫产品在工业和汽车应用领域的布局,以超强CPU性能、创新的实时控制外设及工业和车规级品质,为新能源、储能、电动汽车和工业自动化等应用提供了世界级解决方案。用高规格产品推动中国新能源自主可控,先楫再次打开“芯”篇章!

0.jpg

先楫半导体CEO曾劲涛先生表示:“HPM6200系列基于先楫团队多年的产品和应用经验积累,从IP设计,架构到软件均经过优化,是一款拥有完全自主产权的高性能MCU产品。国外大厂在新能源、储能等领域筑起了很高的壁垒,国产MCU要拿下这个市场必须深度理解应用,从芯片性能到整体方案,全面替代国外产品,才有可能真正解决卡脖子的问题。我们期待早日与各领域客户和合作伙伴一起开发迭代出更适合中国应用的方案。”

全新的HPM6200系列共有12产品型号,包括单核和双核产品,提供144 LQFP 及 116 BGA两种封装 (与先楫已量产的HPM6300 系列管脚兼容),有内置闪存(4MB)和无内置闪存选项。HPM6200 全线产品通过AEC-Q100 认证,工作温度范围在-40°C~125°C。更多的产品信息如下:

  • RISC-V 双核支持双精度浮点运算及强大的 DSP 扩展,主频达到600 MHz,性能达到6780 CoreMark和3420 DMIPS,可在1us内完成基于矢量控制的电流控制环路运算。

  • 32KB 高速缓存 (I/D Cache) 和双核共高达 512KB的零等待指令和数据本地存储器 (ILM / DLM),加上256KB 通用 SRAM,极大避免了低速外部存储器引发的性能损失。

  • 4 组8通道增强型 PWM 控制器,其中 2 组高分辨率PWM调制精度高达100ps,提升了系统控制精度,并可实现单芯片控制多轴电机或者单芯片实现复杂拓扑的数字电源。

  • 2 个可编程逻辑阵列 PLA,灵活实现组合逻辑和时序逻辑器件互联,在芯片内实现用户独有的功能电路设计。

  • 3 个 2MSPS 16 位高精度 ADC,配置为 12 位精度时转换率可达 4MSPS,多达 24 个模拟输入通道;4 个模拟比较器和 2 个 1MSPS 12 位 DAC。 

  • Σ-∆数字滤波 SDM,包含 SINC 数字滤波器,可外接4路Σ∆调制器,实现带隔离的高精度电流和电压信号采集。

  • 多种通讯接口: 1 个内置 PHY 的高速 USB,多达 4路 CAN-FD, 4 路 LIN 及丰富的 UART、 SPI、I2C 等。

1.png

HPM6200 沿用并扩展了先楫半导体已有的生态系统,包括全免费的商用集成开发环境Segger Embedded Studio,以及基于BSD许可证的SDK,其中包含了底层驱动、中间件和RTOS, 例如流行的开源项目lwIP, TinyUSB,CherryUSB, FreeRTOS,tensorflow lite for MCU以及完全自主研发的高性能电机控制库等。以上所有官方软件产品都将开源。硬件方面,HPM6200 提供一款性价比极高的EVK。EVK带板载调试接口,客户可直接调试,并支持ART-PI接口及先楫电机通用接口,以方便客户扩展应用和移植方案。零售价 298 人民币。

2.png

(HPM6200EVK开发板)

HPM6200系列产品现已开放接受订单,样片和开发板即刻开始供货。如需订购,可直接通过官网下单,或与您的客户经理和代理商联系,也可邮件至 info@hpmicro.com 或拨打021-5899-3108,更多信息敬请关注公众号“先楫半导体”或访问官网www.hpmicro.com

来源:先楫半导体HPMicro

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 23
订阅 RSS - HPM6200