打印
[PIC®/AVR®/dsPIC®产品]

【Curiosity Nano测评报告】PIC16F13145 CLB模块小试牛刀

[复制链接]
19242|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
cc1989summer|  楼主 | 2024-9-11 07:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 cc1989summer 于 2024-9-11 20:04 编辑


PIC16F13145原本是个普通的8位单片机,然而正是因为加入了CLB(可配置逻辑模块),具备了一定的FPGA特性,让其无所不能,焕发新生。


PIC16F13145 单片机系列及其专用外设提供了一种实施基于硬件的解决方案的有效方法。该设备系列引入了可配置逻辑块(CLB) 外设,使用户能够将基于硬件的自定义逻辑整合到其应用程序中。CLB由32 个独立的逻辑元件组成。每个逻辑元件的基于查找表(LUT) 的设计提供了广泛的自定义选项,独立于CPU 的操作可改善响应时间和功耗。

也就是下图所示架构。





那么你可能会问,既然有了无所不能的CPU,为啥还要加上这个看起来比较原始〈逻辑门电路组合〉的CLB呢?

我的理解是:一方面解放CPU,CPU可以做更多的事,或是在低功耗模式下进入休眠模式不影响CLB的运行。
一方面,CLB执行逻辑门电路,运行速度效率更佳。对于一些时序、逻辑性电路,用CLB实现比CPU性能更佳。

言归正传,我们来小试牛刀,试一试这个大名鼎鼎的CLB吧!

首先打开MCC,在左侧Device Resources添加CLB1,随后点击Builder主界面的CLB1进入CLB的配置界面。





我们可以看到CLB的配置界面,左侧是各类逻辑门电路单元。

门电路、触发器、复用器等等。


[color=rgba(0, 0, 0, 0.8)]The CLB can have up to 32 basic logic elements including:
  • AND/OR/NAND/NOR gates
  • Buffer/inverting buffer
  • D flip-flop
  • JK flip-flop
  • Multiplexers
  • 4-input LUT
[color=rgba(0, 0, 0, 0.8)]


右侧的main区域,是画图区,可以用鼠标拖动各类模块,拼装成我们的最终CLB模块。




需要注意,必须有途中的深蓝色和浅蓝色 输入及输出单元。




本例中,我们用反相器实现简单的逻辑门电路,也就是把输入取反后送到输出。

输入,对应我们开发板的按钮(RC3),点击左侧图标,在右侧选择CLBIN0PPS ,在下一步把CLBIN0PPS配置为RC3针脚
输出,对应我们开发板的LED灯(RC2),点击右侧图标,在右侧选择PPSOUT1,我们需要在下一步吧PPSOUT1配置为RC2针脚






最后点左下角的Synthesize,MCC就可以自动把我们配置的CLB电路,生成clb1.c〈见上一张图〉



其实这个CLB配置页面,也可以在浏览器中在线进行,最后点击左上角的导出按钮生成XX.clb文件,我们再在MCC中导入即可。

也可以把别人分享的clb文件导入我们的项目。(microchip就有很多实例可下载,详见下面的官网)


更多功能学习及演示,见Microchip官网。





Configurable Logic Block | Microchip Technology
https://www.microchip.com/en-us/products/microcontrollers-and-microprocessors/8-bit-mcus/core-independent-and-analog-peripherals/system-flexibility/configurable-logic-block



下面就是CLB输入输出引脚的配置,我们设置好RC2(LED输出),RC3(输入按钮)
然后,点坐上角Project Resources的Generate生产按钮,就全部生了C语言项目。


最后一步,我们添加几行代码,建立mian.c与CLB的关联,没有这句CLB跑不起来。

然后就实现了我们要的功能:按下按钮灯灭,松开按钮灯亮。




CLB代码及演示视频.zip (4.56 MB)

使用特权

评论回复
沙发
cc1989summer|  楼主 | 2024-9-21 11:56 | 只看该作者
这么宝藏的CLB,没人玩吗?

使用特权

评论回复
板凳
cc1989summer|  楼主 | 2024-9-28 23:31 | 只看该作者
自己顶一个先,发现很多人跟我最初一样,折腾半天CLB根本跑不起来,尤其是自动生成代码后,main函数依然是个空函数,设计好的CLB根本跑不起来,那么可以参考我这篇帖子,也许会给你以启发。

使用特权

评论回复
地板
hu9jj| | 2024-9-29 08:06 | 只看该作者
非常不错的帖子,我也是想尝试使用按键控制LED的实验,但没有成功,现在可以抄现成的作业再试试。

使用特权

评论回复
5
hu9jj| | 2024-9-29 08:11 | 只看该作者
本帖最后由 hu9jj 于 2024-9-29 08:12 编辑

点击提交时出错,再回复又重复了。

使用特权

评论回复
6
hu9jj| | 2024-9-29 08:58 | 只看该作者
请教楼主:我按照您的步骤操作,但在Pin Grid Wive中没有出现CLB1的引脚配置行(见下图),该如何操作才能将CLB1加入到Pin Gride Wive中呢?

使用特权

评论回复
7
lcczg| | 2024-9-29 10:41 | 只看该作者
hu9jj 发表于 2024-9-29 08:58
请教楼主:我按照您的步骤操作,但在Pin Grid Wive中没有出现CLB1的引脚配置行(见下图),该如何操作才能 ...

你好,首先确保CLBINOPPS 和 PPS_OUT1和反相器手工连过线。连好线左下侧的Synthiesize颜色从灰变为蓝,表示没有错误,下一步就可以点击Synthiesize,结果正确,此时CLB1的模块就出现在Pin Grid View窗口了。

使用特权

评论回复
8
lcczg| | 2024-9-29 10:52 | 只看该作者
本帖最后由 lcczg 于 2024-9-29 10:54 编辑

楼主你好,感谢分享。我也用附件里的工程测试了一下,发现是不需要在main函数中添加代码的。

PIC16F13145.X.zip

439.41 KB

使用特权

评论回复
9
hu9jj| | 2024-9-29 13:14 | 只看该作者
谢谢楼主的帮助以及楼上版主的提示,这个CLB按键控制LED灯的实验总算完成了。

使用特权

评论回复
10
cc1989summer|  楼主 | 2024-9-29 21:08 | 只看该作者
hu9jj 发表于 2024-9-29 13:14
谢谢楼主的帮助以及楼上版主的提示,这个CLB按键控制LED灯的实验总算完成了。 ...

总算是山重水复柳暗花明啊

使用特权

评论回复
11
稳稳の幸福| | 2024-9-29 21:34 | 只看该作者
这个模块用的人还不多,需要探索一下用法,感觉很好玩。

使用特权

评论回复
12
hu9jj| | 2024-9-30 08:52 | 只看该作者
cc1989summer 发表于 2024-9-29 21:08
总算是山重水复柳暗花明啊

难者不会,会者不难。掌握了正确的步骤,简单的应用还是很容易做到的。

使用特权

评论回复
13
单片小菜| | 2024-9-30 13:56 | 只看该作者
这个开发环境一直没有安装明白

使用特权

评论回复
评论
cc1989summer 2024-9-30 19:31 回复TA
多折腾折腾,多试试就熟悉了 
14
自己造声卡| | 2024-9-30 14:10 | 只看该作者
沉金的板子就是漂亮

使用特权

评论回复
15
哈根达斯uz| | 2024-9-30 15:46 | 只看该作者
该设备系列引入了可配置逻辑块(CLB) 外设

使用特权

评论回复
16
cc1989summer|  楼主 | 2024-10-1 21:54 | 只看该作者
单片小菜 发表于 2024-9-30 13:56
这个开发环境一直没有安装明白

最重要的是:先安装MPLAB X,再安装MCC。
MPLABX-v6.20-windows-installer.exe
mcc-installer-5.5.1-windows

使用特权

评论回复
17
guijial511| | 2024-10-2 09:57 | 只看该作者
MCU+低配版的FPGA,microchip得益于收购的Microsemi芯片

使用特权

评论回复
18
cc1989summer|  楼主 | 2024-10-2 17:48 | 只看该作者
guijial511 发表于 2024-10-2 09:57
MCU+低配版的FPGA,microchip得益于收购的Microsemi芯片

差不多是这个意思,也算这款MCU的主打特色、

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

23

帖子

0

粉丝