目的
在verilog中,一个多bit信号的低位在右,高位在左。并且访问其某几位时,通常采用左闭右闭的访问方式。
例如:当a=8’b0000_1111,那么1111就是a[3:0]
在python中,一个字符串信号低位在左,高位在右,并且访问的原则是左闭右开。
例如:当a=‘00001111’,那么1111就是a[4:9]
有时,可能需要使用python脚本处理下为RTL的设计做一些准备工作。两种不同的习惯在进行数据处理时就很难受。为此,写了一个小函数来做这件事情。
python代码
#coding=utf-8
def cut(signal, high_bit, low_bit):
signal_r = signal[::-1]
field_r = signal_r[low_bit:high_bit+1]
field = field_r[::-1]
return field
if __name__ == '__main__':
a = "00001111" #a=8'b0000_1111
print cut(a,5,2) #a[5:2]=4'b00_11
运行结果如下
0011