对PIC24进行符号扩展指令

时间:2018-01-19 11:10:19

标签: vhdl xilinx instruction-set pic24

如何为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 个答案:

答案 0 :(得分:0)

查看PIC24的Wikipedia page表明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);

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