上期内容:Byte Write Enable 怎么用
思考空间
代码第17行对RAM的初始化是否可综合?
logic [31:0] ram_block[1024] = '{default:0}
该语句是可以综合的,可在综合后的网表中选中该RAM,在相应的属性窗口中可看到初始值。
对列表搜索的目的是查找特定的元素,这些元素应该与指定的模式相匹配。此时,可用命令lsearch。该命令接收两个参数,第一个参数为列表,第二个参数为匹配模式。
lsearch有三种搜索模式,分别由选项-glob、-exact和-regexp指定。其中默认模式为-glob。该模式按照string match的命令规则进行搜索。
lsearch的返回值是列表中第一个与指定模式匹配的元素的索引。看一个案例,如下图所示。匹配模式为A*,故返回元素AFF对应的索引值3。选项-all可返回所有匹配结果。因此,对于匹配模式[AB]FF,返回的是AFF和BFF对应的索引3和4。
-exact是严格匹配,如下图所示案例。如果匹配模式为LUT*,则会返回为-1,表明列表中没有匹配的元素。
如果需要返回匹配元素而非该元素的索引,可以添加选项-inline,如下图所示。只有-inline的情况下,返回第一个匹配结果;如果同时使用-all,则可返回所有匹配结果。
选项-not可实现对匹配结果取反,以下图所示案例为例。匹配模式为LUT*,-not就会使得lsearch的返回值为所有不与之匹配的元素。-not可以与-inline或-all联合使用。
另一方面,如果仅仅是为了确定指定列表中是否包含某个特定元素,可以用in;如果要确定指定列表中不包含某个特定元素,则可以用ni(not in)。看如下图所示案例。显然,此时使用in或者ni比lsearch更高效。
思考空间
给定列表{RAMB18 RAMB36 LUTRAM RAMB},要求从中找出RAMB18和RAMB36。
欢迎在留言区留言,给出你的方法。
一个HLS Stream应用案例
如何理解HLS中的Stream
如何利用BRAM实现数据延迟
如何从列表中获取元素
一个双端口RAM能配置成两个独立的单端口RAM?
write_first/read_first/no_change什么区别
为什么要用XPM_MEMORY
URAM和BRAM有什么区别
关于PR必须知道的几个基本术语
9个关于SSI芯片的必知问题
如果移位寄存器这么写
如何复用原有设计中Block的位置
Tcl知识库(更新至2019.1)
Vivado HLS知识库(更新至2019.1)
Vivado知识库(更新至2019.1)
文 | Lauren 图 | Lauren
Copyright @ Lauren的FPGA
转载事宜请私信 | 获得授权后方可转载