去年我做了一个解复用器 myhdl 实现(正在工作),我今天重新访问它并更新到 myHDL 0.11,我的原始代码出现错误并开始进行修改。这是我最新的修改。
def getIntbV(numBit):
return intbv(0)[numBit:]
def getSignalBool():
return Signal(bool(0))
MUX_NUM_BIT_OUT = 8
MUX_SEL_NUM_BIT = 3
@block
def flexibleDemux(pin_in, pins_select, pins_out):
@always_comb
def logic():
if(pin_in != 0):
pins_out.next = 1<< pins_select
else:
pins_out.next = 0
return logic
def convert():
pins_select = Signal(getIntbV(MUX_SEL_NUM_BIT))
pins_out = Signal(getIntbV(MUX_NUM_BIT_OUT))
pin_in = getSignalBool()
inst = flexibleDemux(pin_in, pins_select, pins_out)
inst.convert(hdl="VHDL")
它生成了一个 VHDL 文件,但我在 Altera Quartus 上遇到错误:
错误 (10405):flexibledemux.vhd(35) 处的 VHDL 错误:无法确定标识符“shift_left”处或附近的对象类型——找到 0 个可能的类型错误:Quartus Prime 创建符号文件不成功。1 个错误,0 个警告
begin
if (pin_in /= '0') then
pins_out <= to_unsigned(shift_left(1, to_integer(pins_select)), 8); << error here
else
pins_out <= to_unsigned(0, 8);
end if;
我也试过这个
@always_comb
def logic():
val = getIntbV(MUX_NUM_BIT_OUT)
if(pin_in != 0):
val[1<< pins_select] = 1
pins_out.next = val
return logic
但这给了我一个 Python 错误: AttributeError: 'BinOp' object has no attribute 'value'
我的实施可能有什么问题?谢谢