TMS320F280049C 学习笔记20 可配置逻辑块 (CLB) 例程
文章目录
- 基本示例
- CLB 空工程
- 示例7 状态机
- 示例8 外部与门
- 示例9 计时器
- 示例10 两种状态的计时器
- 示例11 中断标记
- 示例12 输出交集
- 示例13 PUSH-PULL接口
- 示例14 Multi-Tile
- 示例15 Tile to Tile 延迟
- 示例1 组合逻辑
- 示例2 GPIO输入滤波器
- 示例3 PWM生成
- 示例4 PWM死区保护
- 示例5 事件窗口
- 示例6 信号生成和检查
- 示例17 生成单脉冲PWM
- 参考文献
截止本文撰写时,TI共为280049C的CLB模块提供了17个例程,位置在C:\ti\c2000\C2000Ware_3_01_00_00\driverlib\f28004x\examples\clb
介绍它们的文档为[1]。
有些例程较为简单,有些则实现了复杂的功能。本文对每个示例的描述做了翻译,对于基本示例,翻译是完整的;对于其他示例,本文仅提供简单概括,具体内容请参考[1]。
基本示例
CLB 空工程
这个例子是一个空的CLB项目,包含生成“.OUT”目标二进制文件、模拟“.VCD”和HTML框图的后处理步骤。
示例7 状态机
[2][3]描述了如何使用CLB一步步地设计应用程序。此示例使用了CLB tile中的所有子模块来实现完整的系统。
示例8 外部与门
在本例中,来自两个gpio的外部信号通过输入X-BAR和CLB X-BAR传递到CLB TILE。在CLB模块内,这两个信号相与,然后使用输出X-BAR将与门的输出导出到GPIO。
示例9 计时器
在本例中,COUNTER模块用于创建定时事件。显示了GP寄存器的使用。通过设置/清除GP寄存器中的位,定时器被启动、停止或改变方向。计时器事件(1时钟周期)的输出导出到GPIO。使用HLC模块从计时器事件生成中断。在CLB ISR内切换GPIO状态。间接CLB寄存器访问用于更新计时器的事件匹配值和活动计数器寄存器以修改计时器的频率。
示例10 两种状态的计时器
在本例中,计时器的设置与前一个示例相同。区别在于使用FSM子模块切换CLB的输出,然后将其导出到GPIO。FSM模块充当一个单位内存块。中断的设置格式与前面的示例相同。通过比较CLB的输出和ISR中切换的GPIO,可以观察CLB的中断延迟。
示例11 中断标记
在本例中,计时器设置为两个不同的匹配值。HLC子模块使用这两个事件来生成中断。中断TAG用于区分由CLB计数器的match1事件和CLB计数器的match2事件产生的中断。
示例12 输出交集
在本例中,CLB模块的设置与外部与门示例相同。但是,不是使用输出X-BAR将输出导出到GPIO,而是通过替换ePWM1的输出将输出导出到GPIO。这是通过将GPIO配置为EPWM1A,然后启用输出取交集来完成的。
示例13 PUSH-PULL接口
在本例中,显示了PUSH-PULL接口的使用。使用多个计数器子模块、HLC子模块、FSM子模块和OUTLUT子模块。PUSH-PULL接口与GP寄存器一起使用,以更新计数器子模块的事件频率。
示例14 Multi-Tile
在本例中,CLB tile的输出传递给另一个CLB tile的输入。然后,第二个CLB tile的输出被导出到GPIO,显示两个CLB tile如何串联使用。
示例15 Tile to Tile 延迟
在本例中,GPIO的输出通过输入XBAR和CLB XBAR进入CLB tile。信号由tile转发到下一个tile。这次信号只通过CLB XBAR而不是输入XBAR。这样做是为了表明,当信号从一个tile传递到另一个tile时,延迟被添加,并且延迟没有被characterized。用户应始终避免在tile之间传递具有计时要求的信号。CLB内的计数器模块将按周期计算延迟量。
示例1 组合逻辑
本例的目的是防止在一个PWM对上同时产生高或低输出。PWM模块1和2被配置成基于固定频率递增计数模式生成相同的波形。
示例2 GPIO输入滤波器
此示例演示如何使用有限状态机(FSM)和计数器来实现简单的“故障”滤波器,例如,该滤波器可以应用于传入的GPIO信号以消除不需要的短脉冲。
示例3 PWM生成
此示例将CLB tile配置为辅助PWM生成器。示例使用组合逻辑(lut)、状态机(FSMs)、计数器和高级控制器(HLC)来演示使用CLB的输出PWM的能力
示例4 PWM死区保护
本示例扩展了示例1的特征,以确保高有效互补PWM配置始终以最小死区值运行,而不管生成的PWM模块是如何配置的。示例说明了四个单独的PWM tile的配置,以在四个PWM模块上实现PWM死区保护。
示例5 事件窗口
此示例使用CLB的计数器、FSM和HLC子模块来实现事件计时功能,该功能检测中断服务例程是否需要过长时间来响应中断。
示例6 信号生成和检查
本例使用CLB1生成矩形波,CLB2检查CLB1生成的矩形波是否超过定义的占空比和周期限制。
示例17 生成单脉冲PWM
此示例演示如何将CLB tile配置为单脉冲PWM发生器。该示例使用组合逻辑(lut)、状态机(FSMs)、计数器和HLC来演示在接收外部/软件触发器时的单脉冲PWM生成能力。
参考文献
- CLB Tool User’s Guide
- Designing With the C2000™ Configurable Logic Block (CLB)
- 使用 C2000™可配置逻辑块 (CLB) 进行设计
- 如何将 FPGA/CPLD 中的自定义逻辑迁移至 C2000™微控制器
TMS320F280049C 学习笔记20 可配置逻辑块 (CLB) 例程相关推荐
- TMS320F280049C 学习笔记19 可配置逻辑块 (CLB) 软件配置
文章目录 CLB tool 简介 CLB配置过程概述 软件安装 GNU Compiler Install the Simulation Viewer 使用CLB tool 导入空CLB工程 更新变量路 ...
- TMS320F280049C 学习笔记3 可配置逻辑块 Configurable Logic Block (CLB) 技术手册
文章目录 概述 输入 输出 The CLB Tile 特性 静态开关块 Static Switch Block 计数器块 Counter Block 有限状态机块 FSM Block LUT4 Blo ...
- TMS320F280049C 学习笔记1 概述及GPIO
索引 前言 心情记录 动机 概述 硬件平台 软件资源 参考文献 参考设计 关于GPIO 前言 心情记录 真的是好久没有写博客了. 回顾了一下博客的文章列表,想着是不是删掉一些没营养的文章,后来想想算了 ...
- 小猫爪:S32K3学习笔记20:S32K3之SCST及其应用
小猫爪:S32K3学习笔记20:S32K3之SCST及其应用 1 前言 2 SCST简介 3 移植 4 应用 4.1 启动测试 4.2 使能FPU相关测试项 4.3 49号测试项中的MPU配置 4.4 ...
- LINUX学习笔记1 网卡配置(网络适配器安装失败问题解决)
LINUX学习笔记1 网卡配置(网络适配器安装失败问题解决) 概述 每一次选修课总会碰到一堆问题,我真的是幸运得很.这次是LINUX服务器管理这门课,最开始安装虚拟机一切正常(用的是VMware安装u ...
- Hadoop学习笔记—20.网站日志分析项目案例(一)项目介绍
Hadoop学习笔记-20.网站日志分析项目案例(一)项目介绍 网站日志分析项目案例(一)项目介绍:当前页面 网站日志分析项目案例(二)数据清洗:http://www.cnblogs.com/edis ...
- Ext.Net学习笔记20:Ext.Net FormPanel 复杂用法
Ext.Net学习笔记20:Ext.Net FormPanel 复杂用法 在上一篇笔记中我们介绍了Ext.Net的简单用法,并创建了一个简单的登录表单.今天我们将看一下如何更好是使用FormPanel ...
- 2020-4-20 深度学习笔记20 - 深度生成模型 3 (实值数据上的玻尔兹曼机)
第二十章 深度生成模型 Deep Generative Models 中文 英文 2020-4-17 深度学习笔记20 - 深度生成模型 1 (玻尔兹曼机,受限玻尔兹曼机RBM) 2020-4-18 ...
- 2020-4-22 深度学习笔记20 - 深度生成模型 5 (有向生成网络--sigmoid信念网络/可微生成器网络/变分自编码器VAE/生产对抗网络GAN/生成矩匹配网络)
第二十章 深度生成模型 Deep Generative Models 中文 英文 2020-4-17 深度学习笔记20 - 深度生成模型 1 (玻尔兹曼机,受限玻尔兹曼机RBM) 2020-4-18 ...
最新文章
- 机器学习(MACHINE LEARNING)MATLAB之surf()函数
- angular2、ng2 http get post 传参
- 课堂练习---最低价格买书
- Druid源码分析系列1:dataSource.init()的准备工作
- CSS- 横向和纵向时间轴
- LaTeX的安装教程及问题记录
- Omni Recover for Mac版 - 一站式iPhone数据恢复
- Codeforces Round #192 (Div. 1) A. Purification 贪心
- positive definite quadratic form and positive definite matrix
- ue4网格转地形_关于纬地结合扫描地形图进行道路设计和出图的教程
- pyqsplitter 保持一个窗口不能拖动_Axure教程:左侧导航如何自适应浏览器窗口高度?...
- emu8086的入门使用
- Mysql中有关Datetime和Timestamp的使用总结
- MIME protocol 说明
- HTML标签的属性和特性
- wait和notify方法
- C语言|鼠标点击开始
- 频谱仪和信号发生器的使用
- u-boot-1.3.4 移植到S3C2440 (带有某些解析)
- 评估指标(Metric)(二)
热门文章
- 接手1号店的京东 更看重与沃尔玛的合作
- 【区块链 | 智能合约】Ethereum源代码(1)- 下载、编译、启动go-ethereum
- GBT25000.51-2016信息安全特性解读
- mpos判断条件由接口返回
- Android 线程与消息 机制 15问15答
- 免费又好用的参考文献管理软件zotero该怎么使用?可以同时支持中文和英文吗?...
- 参加ACM经历及总结
- Python基础学习之”基础语法5
- python在vsc制作动态二维码_用VScode愉快的写python代码
- storm mysql trident_Trident简介