TMS320F280049C 学习笔记19 可配置逻辑块 (CLB) 软件配置
文章目录
- CLB tool
- 简介
- CLB配置过程概述
- 软件安装
- GNU Compiler
- Install the Simulation Viewer
- 使用CLB tool
- 导入空CLB工程
- 更新变量路径
- 配置CLB tile
- 使用 CLB 仿真器
- The Statics Panel
- 创建输入激励
- 运行仿真
- 示例
- 参考文献
CLB的基础知识请参考[2],本文主要围绕[1]展开。
该功能要求CCS版本不低于9.0。
CLB tool
简介
CLB是集成到某些C2000器件中的硬件模块。CLB包含一组可配置的块和内部连接,允许用户创建自己的自定义数字逻辑,这些逻辑过去可以通过FPGA来完成。例如,CLB可以配置为增强现有设备外围设备的功能,或创建新的外围设备功能。CLB是使用一个软件程序配置的,这里称为“CLB tool”。
CLB tool允许用户配置和连接每个CLB tile中的子模块。该工具使用“SysConfig”图形用户界面(GUI),其是CCS的一部分。该工具包含少量示例,旨在帮助用户探索该工具的功能并创建自己的项目。
该工具生成一个C头文件,其中包含与用户在GUI中定义的配置相对应的一组常量。该工具还生成一个C源文件,该文件使用C头文件中的常量来初始化CLB模块,方法是通过一系列寄存器加载操作将常量加载到CLB寄存器中。必须在设备初始化期间调用C源文件中的函数。该工具不配置CLB tile和其他外设,包括X-bar和其他CLB tile,之间的输入和输出连接。这些寄存器的配置必须单独进行,由用户负责。
CLB配置过程概述
CLB工具基于CCS中的“SysConfig”工具。这作为c2000WARE软件的一部分,足以配置CLB。但为了对设计进行仿真,需要安装一些第三方工具,包括编译器和wave查看器。
CLB工具生成一个“.dot”文件,该文件以图表形式显示子模块间的连接,并可用于验证设计。在CCS后处理步骤中,使用提供的示例中的node.js和JavaScript库将此文件转换为HTML格式。该工具还生成一个“clb-sim.cpp”文件。CPP文件以及其他CLB仿真模型是使用GCC编译器编译的。编译的输出是一个“.exe”文件,必须在本地计算机上执行该文件才能生成一个“.vcd”文件。此“.vcd”文件可用于使用外部图形查看器进行时序分析。所有这些步骤都是使用CCS的后处理步骤自动完成的。
CLB配置编码在生成的C头文件“CLB_config.h”中。clb工具生成的“clb_config.c”文件使用生成的头文件将配置加载到clb模块的寄存器中。需要注意的是,在C28x设备的应用程序代码中,必须在设备初始化步骤期间调用“clb_config.c”文件中的函数。图1显示了CLB工具的输出和后处理的步骤。
在典型的场景中,用户从所需的CLB逻辑功能的规范开始。这可以是逻辑电路图、时序信息、书面描述、VHDL代码或其他形式。安装了必要的工具后,第一步将是连接tile子模块以实现所需的逻辑。
规范可以包括一组时序图,在这种情况下,用户可以(可选地)对CLB配置进行仿真,以确保性能如预期的那样。该步骤包括定义一组输入测试刺激,并构建一个模拟项目以生成可在图形查看器中打开的模拟波形。如果结果不符合预期,用户将修改SysConfig设置并重复仿真。
一旦从模拟中得到正确的波形,用户就可以设计下载到设备中。
在为C28x设备启用CLB SysConfig的CCS项目中,创建CLB Tile配置的HTML框图和生成“.vcd”模拟波的步骤是自动化的。当用户编译CCS项目时,用户应用程序代码以及生成的“clb_config.h”和“clb_config.c”是使用C28x编译器编译的,并生成一个“.out”文件。后处理步骤使用GCC编译器编译生成仿真文件、“clb-sim.cpp”和“clb-config.h”以及clb仿真模型。此步骤的输出是一个“.exe”文件(“simulation_output.exe”)。接下来,在构建后的步骤中,执行“.exe”文件并生成“CLB.vcd”。可以使用外部图形查看器查看此文件。
CCS中包含的功能就可以配置CLB,但如果需要进行仿真,还需要以下两个软件:
- 一个GNU编译器(TDM-GCC)
- 一个仿真观察器(GTK Wave)
软件安装
本文提供的软件与手册中稍有不同,版本更新一些。
GNU Compiler
- 从以下链接下载“tdm-gcc”: https://jmeubank.github.io/tdm-gcc/articles/2020-03/9.2.0-release
- 打开下载的文件以安装编译器。
- 取消选中“检查TDM-GCC服务器上的更新文件”复选框。
- 从安装向导中选择“Create”。
Install the Simulation Viewer
- 从以下链接下载波形查看器GTKwave: https://sourceforge.net/projects/GTKwave/files/。
- 下载本机二进制文件以进行正确的Windows安装(例如,对于64位Windows,
选择“gtkwave-3.3.100-bin-win64”),并将下载的zip文件解压缩到目录c:\ gtkwave。
使用CLB tool
导入空CLB工程
步骤与导入其他工程一样。位置在<C2000WARE_INSTALL>/driverlib//examples.
比如:C:\ti\c2000\C2000Ware_3_01_00_00\driverlib\f28004x\examples\clb
更新变量路径
上面导入的空CLB项目不仅可以为C28x目标生成“.OUT”文件,还可以生成仿真文件和设计的HTML框图。
上面下载的GCC编译器的路径可能与项目中指定的路径不同。
再次检查:
- 右键单击项目并选择“Project Properties”。
- 在“Resources’”下,选择“Linked Resources”。
- 检查以确保以下所有路径都正确:
a、 CLB_SYSCFG_ROOT(所有CLB组件都与此路径相关)
b、 CLB_SIM_COMPILER(对仿真很重要)
c、 SYSTEMC_INSTALL(对仿真很重要)
配置CLB tile
要打开配置工具,请在CCS项目浏览器窗口中双击要编辑的“.syscfg”文件。
如果此屏幕未打开,请确保已正确完成之前的步骤。
CLB tile的配置包含在每个.syscfg文件中。如果需要,可以更改tile的名称。可以将多个.syscfg文件添加到同一项目中。
对于高亮显示的tile,右侧窗格中会显示子模块列表。通过单击每个子系统名称右侧的“show”一词,可以检查和编辑每个子系统的参数。
“BOUNDARY”项是特例。此组允许用户选择仅用于仿真的tile输入。当生成工具配置时,CLB输入始终来自TRM中描述的全局和本地mux模块,但是为了仿真,用户可以指定一个方波信号源,以及一个周期和占空比(均以时钟周期为单位)和同步条件,如下图所示。还支持用于仿真目的的自定义波形生成。有关仿真器的更多信息,请参阅第4节。这些选项仅用于模拟,不影响实际的CLB配置。
用户使用工具中的复选框和下拉选项配置和连接每个tile中的子模块。当鼠标光标悬停在配置工具中的每个项上时,将显示上下文相关帮助。下图显示了COUNTER_0子模块中match1_val字段的示例。
LUT和FSM的逻辑公式是通过使用C格式的文本输入配置的。表1显示了布尔方程中允许的符号。
支持使用括号:例如,可以写入:i1 | !(i2 & i3)。该工具在输入方程式时对其执行语法检查。输入行下方的错误消息指示了无效的公式。
一些不太可能的逻辑组合会向用户发出警告。下图显示了一个示例,其中用户试图在布尔方程中使用LUT_0中的i2输入。但是,i2配置为一个常量,这不太可能是用户想要的。警告出现在方程式和下面的输入选项。
对于某些字段,该工具对数字项执行范围检查,以确保它们位于允许的范围内。例如,尝试加载值大于2^32的计数器子模块将产生警告。
当用户输入配置数据时,该工具会自动生成数个文件。要查看生成的文件,请单击工具右上角的“<>”符号。双击文件名将其打开。
CLB配置寄存器设置包含在头文件“CLB_config.h”中,用户可以通过单击文件名打开和检查该文件。重要的是,每当用户更改任何CLB设置时,该工具都会更新此文件。因此,用户不应该对文件内容进行任何手动更改,因为这些内容将被工具重写。如果在更改CLB设置时文件保持打开状态,则用户可能会看到文件中受影响的寄存器数据更改。
HLC子模块的字段包括用于配置事件和初始值的字段。这四个事件中的每一个都可以触发由多达八条指令组成的短程序的执行。有关HLC的更多信息,请参阅特定于器件的TRM。
选择有效的事件触发器后,工具将显示用户可以在其中键入HLC指令的行。在八条指令全部使用之前,始终显示一个空行。在图14中,用户选择了一个HLC触发器事件,并输入了一个由三条指令组成的短程序。
使用 CLB 仿真器
The Statics Panel
配置工具的顶部面板包含模拟中使用的三个“静态”设置。将鼠标悬停在每个字段上以查看简短的说明。
“clock_period”是用于仿真的CLB时钟周期(以纳秒为单位)。“sim_duration”字段允许用户控制模拟运行的持续时间,同样以纳秒为单位。“reset_duration”字段允许用户在模拟激活之前插入延迟(以纳秒为单位),以模拟设备重置的效果。
创建输入激励
展开“Boundary”类别。
可以使用下拉菜单为八个CLB输入中的每一个定义单独的输入激励。
单击右侧的向下箭头以显示选项:
- 无-默认选项,不会产生任何激励。
- 方波–允许用户定义具有可配置占空比和相位的周期性PWM。
“in-edge”选项为用户提供了选择,在CLB时钟脉冲的PWM波的上升和/或下降边缘产生周期和占空比分别设置为10和5。“in_sync”复选框强制将输入波形同步到CLB时钟。有关更多信息,请参阅设备特定TRM中的CLB input mux部分。 - Custon - 为用户提供生成自定义激励的能力。要使用此选项,用户必须在标有“in_custom”的行中输入systemC命令。这是该工具的高级功能,当前版本中没有提供示例。
运行仿真
一旦定义了CLB配置和输入激励,用户就可以编译项目了。“CLB.vcd”文件是在后处理步骤完成后生成的。
假设波形查看器的配置已完成,双击此文件应打开查看器并允许检查波形。图19显示了设置为显示输入波形示例的GTKwave查看器。有关如何添加和查看信号的信息,请参阅查看器文档。
如果仿真的波形与预期不匹配,用户通常修改.syscfg文件中的配置并重复仿真。
示例
C:\ti\c2000\C2000Ware_3_01_00_00\driverlib\f28004x\examples\clb
旧版本文档中提到的内容:
软件环境配置: 打开CCS,菜单栏View → CCS App Center.在第一项Code Composer Studio
Add-ons中选择更多,安装GUI Composer Runtime v1.0。
参考文献
- CLB Tool User’s Guide
- TMS320F280049C 学习笔记3 可配置逻辑块 Configurable Logic Block (CLB) 技术手册
TMS320F280049C 学习笔记19 可配置逻辑块 (CLB) 软件配置相关推荐
- TMS320F280049C 学习笔记20 可配置逻辑块 (CLB) 例程
文章目录 基本示例 CLB 空工程 示例7 状态机 示例8 外部与门 示例9 计时器 示例10 两种状态的计时器 示例11 中断标记 示例12 输出交集 示例13 PUSH-PULL接口 示例14 M ...
- TMS320F280049C 学习笔记3 可配置逻辑块 Configurable Logic Block (CLB) 技术手册
文章目录 概述 输入 输出 The CLB Tile 特性 静态开关块 Static Switch Block 计数器块 Counter Block 有限状态机块 FSM Block LUT4 Blo ...
- springmvc学习笔记(19)-RESTful支持
springmvc学习笔记(19)-RESTful支持 标签: springmvc springmvc学习笔记19-RESTful支持 概念 REST的样例 controller REST方法的前端控 ...
- TMS320F280049C 学习笔记1 概述及GPIO
索引 前言 心情记录 动机 概述 硬件平台 软件资源 参考文献 参考设计 关于GPIO 前言 心情记录 真的是好久没有写博客了. 回顾了一下博客的文章列表,想着是不是删掉一些没营养的文章,后来想想算了 ...
- Ext.Net学习笔记19:Ext.Net FormPanel 简单用法
Ext.Net学习笔记19:Ext.Net FormPanel 简单用法 FormPanel是一个常用的控件,Ext.Net中的FormPanel控件同样具有非常丰富的功能,在接下来的笔记中我们将一起 ...
- 区块链学习笔记19——ETH难度调整
区块链学习笔记19--ETH难度调整 学习视频:北京大学肖臻老师<区块链技术与应用> 笔记参考:北京大学肖臻老师<区块链技术与应用>公开课系列笔记--目录导航页 前面学过,比特 ...
- TMS320F280049C 学习笔记31 控制率加速器 CLA 学习随笔
文章目录 前言 文献阅读记录 整数比较时的注意点 参考文献 前言 去年在入门DSP的时候曾对控制率加速器(Control Law Accelerator, CLA)做过初步的学习[1][2],但后来的 ...
- openCV2学习笔记---1.环境配置
openCV2学习笔记-1.环境配置 openCV 是开源的计算机视觉代码库,可以运行在Linux.Windows和Mac OS操作系统上.它轻量级而且高效--由一系列 C 函数和少量 C++ 类构成 ...
- Python学习笔记19:列表 III
Python学习笔记19:列表 III 其实这篇笔记标题应该是列表扩展,从列表开始,将涵盖Python中的序列容器. 关于列表的基础知识,可以看我的前两篇文章: Python学习笔记1:列表. Pyt ...
最新文章
- 年后准备跳槽可以看看
- H5开发的web APP和原生APP的区别
- jdbc mysql驱动_MySQL JDBC驱动程序如何处理准备好的语句
- python图像处理大全
- promise用法_【JavaScript 教程】异步操作——Promise 对象
- 深度学习福利入门到精通第二讲——AlexNet模型
- How to manage concurrency in Django models
- 《流畅的Python》读书笔记——符合Python风格的对象
- 性能测试--jmeter中HTTP Cookie管理器的使用【18】
- vscode java
- 集美大学计算机课程考试系统,集美大学教务管理系统入口http://jwgl3.jmu.edu.cn
- swagger注释HTML,Swagger注解生成Rest Api文档
- html5的canvas绘制迷宫地图
- 冲水步骤(智能马桶开发记录)
- Flume自定义拦截器
- 闹剧还是情有可原?联想撤回科创板上市申请后,股价大跌13%
- 【Linux从青铜到王者】第二十篇:Linux网络基础第三篇之IP协议
- 服务器访问时502 Server dropped connection 错误解决方法
- 亲测有效解决“你已购买过此项目,现在可以免费下载,不再另外收费”提示
- 考研常识|夏令营和预推免有什么区别?