TMS320F280049C 学习笔记19 可配置逻辑块 (CLB) 软件配置_时雨晴天的博客-程序员信息网_dsp的clb

技术标签: TI DSP学习  CLB  28049C  可配置逻辑块  


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,但如果需要进行仿真,还需要以下两个软件:

  1. 一个GNU编译器(TDM-GCC)
  2. 一个仿真观察器(GTK Wave)

软件安装

本文提供的软件与手册中稍有不同,版本更新一些。

GNU Compiler

  1. 从以下链接下载“tdm-gcc”: https://jmeubank.github.io/tdm-gcc/articles/2020-03/9.2.0-release
  2. 打开下载的文件以安装编译器。
  3. 取消选中“检查TDM-GCC服务器上的更新文件”复选框。
  4. 从安装向导中选择“Create”。
    在这里插入图片描述
    在这里插入图片描述

Install the Simulation Viewer

  1. 从以下链接下载波形查看器GTKwave: https://sourceforge.net/projects/GTKwave/files/。
  2. 下载本机二进制文件以进行正确的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编译器的路径可能与项目中指定的路径不同。
再次检查:

  1. 右键单击项目并选择“Project Properties”。
  2. 在“Resources’”下,选择“Linked Resources”。
  3. 检查以确保以下所有路径都正确:
    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。

参考文献

  1. CLB Tool User’s Guide
  2. TMS320F280049C 学习笔记3 可配置逻辑块 Configurable Logic Block (CLB) 技术手册
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/whyorwhnt/article/details/105591231

智能推荐

企业信用评分卡模型概述_python风控模型的博客-程序员信息网_企业信用评级模型

企业信用评级在全球金融领域有广泛应用。它涉及到公司管理,企业债发行,企业融资,企业上市,企业并购,个人炒股和购买公司债券等多个场景。企业债发行 企业主体信用评级越高,意味着该企业抗风险能力、盈利能力越强,发债融资成本越低。作为企业董事会,管理者,决策者应该了解企业主要财务指标,了解自身企业评级。 企业发债时都需要评级。国内评级这块主要分为AAA、AA+、AA、AA-、A+。企业评级过低会限制某些工具的发行额度、交易场所可质押性等等 如果是评级太低,企业发行债券没人买...

[转]机器学习工具:scikit-learn/Weka_黑夜路人的博客-程序员信息网

开源机器学习工具scikit-learn入门Scikit-Learn是基于python的机器学习模块,基于BSD开源许可证。这个项目最早由DavidCournapeau 在2007 年发起的,目前也是由社区自愿者进行维护。Scikit-Learn的官方网站是http://scikit-learn.org/stable/,在上面可以找到相关的Scikit-Learn的资源,模块下载,文档,例程等等。

ExtJs 4.x 学习小记:Ext.PagingToolbar翻页时查询参数丢失的处理_bdmh的博客-程序员信息网_ext.toolbar.paging

界面结构:左侧是分类树结构,右侧是表格,点击左侧类别,根据类别ID,去刷新右侧Grid的记录当第一次点击左侧分类节点时,因为是通过代码去请求数据,传递参数catalogid,一切正常,处理catalogid以外,ext还会会自动传递start和limit,start为起始索引,limit是每页显示数量,类似如下请求http://xxxxx/?catalogid=3&start=0&

机器学习算法的整理_西檬饭的博客-程序员信息网

欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld。 技术交流QQ群:433250724,欢迎对算法、机器学习技术感兴趣的同学加入。以下是我利用业余时间在自己博客中写的文章,主要是一些基础、经典算法的整理,目的一方面是为了科普机器学习技术,让更多同学可以...

安装HI3201aSDK包里ko目录下的hifb.ko为什么会报错_~学海无涯~的博客-程序员信息网

/mnt # insmod hi3521a_ai.kohi3521a_ai: Unknown symbol VB_InquirePoolUserCnt (err 0)hi3521a_ai: Unknown symbol CMPI_UnRegisterModule (err 0)hi3521a_ai: Unknown symbol CMPI_MmzMallocNocache (err 0

react+antd Radio单选图片样式_狗蛋今天睡醒了吗的博客-程序员信息网

&lt;Radio.Group onChange={onChange} value={value}&gt; {radioArr.map(item =&gt; ( &lt;div className={classnames(styles.selectEveryBox, styles[item.img])}&gt; &lt;Radio value={item.value}/&gt; &lt;/div&gt; ))}&lt;/Radio.Group&gt;css:gl.

随便推点

什么是产品负责人 Scrum: Product Owner (PO)?_Warren2Lynch的博客-程序员信息网_scrum产品负责人

产品负责人是Scrum团队的一员,因此,与Scrum Master一样,他们对团队的其他成员没有任何权力。尽管他们是Scrum团队与客户之间的主要联系,但他们确实扮演了至关重要的决策角色。产品负责人代表产品的利益相关者行事,负责最大化最终产品的价值。ScrumMaster拥有该流程的地方,可以将产品负责人视为拥有价值。谁是产品负责人?产品负责人是一个人 - 这个角色不应该在几个人之间分...

ES6/ES7/ES8/ES9资料整理_会吐泡泡的小鱼儿的博客-程序员信息网

转载https://juejin.im/post/5c02b106f265da61764aa0c1#heading-0

利用pyinstaller打包.py文件,将python的脚本部署到其他没有安装python环境的电脑,同时可以传参数(mac os)_养蛋专家的博客-程序员信息网

安装·pip3 install pyinstaller切换到.py文件路径,执行:pyinstaller -F **.py执行成功后./dist路径下生成可执行文件,将dist文件夹压缩即可将压缩包发给没有python环境的mac(mac生成的可执行文件,必须在mac下执行,windows需要在windows环境相生成.exe文件)解压后切换到./dist路径cd ./dist...

PYNQ上手笔记 | ②PL端和PS端的独立开发_Mculover666的博客-程序员信息网_pl端和ps端是什么意思

Zynq中PL端的开发和FPGA芯片的开发流程完全一样,需要注意的一点是,PL端的配置需要PS端配置,所以在这里我们只能使用JTAG方式下载测试程序,并且需要将Pynq-Z2开发板的启动方式切换为JTAG方式:将右上角的BOOT选择端子连接最右边两个引脚,选中JTAG方式。1.建立Vivado工程1.1.新建工程1.2.工程名及工程位置1.2.工程类型——RTL级工程1.3.器件型...

微信小程序之地图关键词输入提示,点击地点打开相应位置_lily_808的博客-程序员信息网

运行效果​​功能介绍本案例采用腾讯位置服务中关键词输入提示方法,对用户输入的关键词进行补齐,并弹出返回匹配度高的结果,用户点击任意一个结果,打开此位置,之后可以借助于微信内置地图来实现导航等后续功能。主要代码wxml页面框架页面中主要包含一个全屏显示的地图组件、一个位于顶部的输入框组件和位置呈现区域的view组件&lt;map id="map" longitude="{{longitude}}" latitude="{{latitude}}" markers="{{marker

byte=130(为byte类型赋值超长度的内容)_structure_wjg的博客-程序员信息网

byte的长度是-127~128,目前需要赋值130,会出现什么情况;首先会出现编译错误,会报出丢失精度,如果不报错可以强制类型转换,将130强转成byte直接上代码解释:/** * 练习:byte b = 130 * @author wangjg * */public class Byte130 { public static void main(String...

推荐文章

热门文章

相关标签