0

去年我做了一个解复用器 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'

我的实施可能有什么问题?谢谢

4

0 回答 0