0

如何在 VHDL(ALU 中)为 PIC24 实现符号扩展指令?我需要实施以下说明,但我不知道如何实施 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

这是 pic24 手册中的 SE

4

1 回答 1

0

查看 PIC24 的Wikipedia 页面显示该SE指令具有以下行为:

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

可以使用连接运算符( &) 将第 7 位复制到第 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);

第一行用; 的第dst7位填充所有src; 第二行用 的 7:0dst位覆盖 7:0 位src

于 2018-01-19T11:40:41.303 回答