如何实现搜索列表_如何对列表进行搜索

fc06e4f2a0d382c89e997f2d6b7f958f.png

上期内容:Byte Write Enable 怎么用

e19a965e0d9383e537a8e7ba2f14be79.png

思考空间

代码第17行对RAM的初始化是否可综合?

logic [31:0] ram_block[1024] = '{default:0}

该语句是可以综合的,可在综合后的网表中选中该RAM,在相应的属性窗口中可看到初始值。

e19a965e0d9383e537a8e7ba2f14be79.png

对列表搜索的目的是查找特定的元素,这些元素应该与指定的模式相匹配。此时,可用命令lsearch。该命令接收两个参数,第一个参数为列表,第二个参数为匹配模式。

lsearch有三种搜索模式,分别由选项-glob、-exact和-regexp指定。其中默认模式为-glob。该模式按照string match的命令规则进行搜索。

lsearch的返回值是列表中第一个与指定模式匹配的元素的索引。看一个案例,如下图所示。匹配模式为A*,故返回元素AFF对应的索引值3。选项-all可返回所有匹配结果。因此,对于匹配模式[AB]FF,返回的是AFF和BFF对应的索引3和4。

1bc509035b42302661f4f417c36d47b7.png

-exact是严格匹配,如下图所示案例。如果匹配模式为LUT*,则会返回为-1,表明列表中没有匹配的元素。

6eab4705a41dbe881e14a602f3c56ea6.png

如果需要返回匹配元素而非该元素的索引,可以添加选项-inline,如下图所示。只有-inline的情况下,返回第一个匹配结果;如果同时使用-all,则可返回所有匹配结果。

35dbd3bbcbb3265091a0193974194223.png

选项-not可实现对匹配结果取反,以下图所示案例为例。匹配模式为LUT*,-not就会使得lsearch的返回值为所有不与之匹配的元素。-not可以与-inline或-all联合使用。

848ebe461d263ce690e730dc84b4229e.png

另一方面,如果仅仅是为了确定指定列表中是否包含某个特定元素,可以用in;如果要确定指定列表中不包含某个特定元素,则可以用ni(not in)。看如下图所示案例。显然,此时使用in或者ni比lsearch更高效。

7d6e0ab0e322108d8155bf316d96adc8.png

0915740cc5250cdfce85f6cbba08b437.png

6041356b388811084a3b056a684ae1cf.gif

思考空间

给定列表{RAMB18 RAMB36 LUTRAM RAMB},要求从中找出RAMB18和RAMB36。

欢迎在留言区留言,给出你的方法。

ab53a6c6c3ab3a4fb2777dac9dce8882.png

一个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)

9d38b14cc41492d80d9b8c5937daef41.png

620c5ecb9ec51367bf1d2476db234caa.png

文 | Lauren 图 | Lauren

Copyright @ Lauren的FPGA

转载事宜请私信 | 获得授权后方可转载

198b83e247218a1db6c8f56b84503ff8.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值