代码之家  ›  专栏  ›  技术社区  ›  Andreea Dumitru

PIC24的签名扩展指令[关闭]

  •  0
  • Andreea Dumitru  · 技术社区  · 7 年前

    如何在PIC24的VHDL(ALU)中实现符号扩展指令? 我需要执行以下说明,我不知道如何执行SE。

    LOOP: 
       mov 0x1020, w1 ; INW0=ff7f
       mov 0x1022, w2 ; INW1=8001
       ior w2, w2, w3 ; N=1
       se  w1, w1  ; N=0
    REP1:
       bra n, REP1
       add w1, w1, w5
       se  w5, w6  , N=1
       bra n, CONT1
    REP2:
       bra rep2
    CONT1:
       mov w6, 0x1024
       bra LOOP
    

    This is SE in pic24's manual

    1 回复  |  直到 7 年前
        1
  •  0
  •   Matthew Taylor    7 年前

    查看 Wikipedia page 对于PIC24,显示 SE 指令有以下内容:

    SE src,dst C Z N dst ← sign_extend(src), copy bit 7 to bits 15:8

    可以使用 串联运算符 ( & ),它将数组连接在一起以生成更大的数组:

    dst <= src(7) & src(7) & src(7) & src(7) & src(7) & src(7) & src(7) & src(7) & src(7 downto 0);
    

    通过将其拆分为两行并使用 零件选择 总数的 :

    dst <= (others => src(7));
    dst(7 downto 0) <= src(7 downto 0);
    

    第一行填充 dst 第7位为 src ; 第二行覆盖 dst公司 位为7:0的 src公司 .