cr88192

prototype BJX1 instruction decoder.

Jan 10th, 2018
521
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
VeriLog 24.88 KB | None | 0 0
  1. /*
  2. Instruction Word
  3.  15: 0, First Word
  4.  31:16, Second Word
  5.  */
  6.  
  7. `include "CoreDefs.v"
  8.  
  9. module DecOp3(
  10.     /* verilator lint_off UNUSED */
  11.     clk,
  12.     istrWord,
  13.     regCsFl,
  14.     idRegN,
  15.     idRegS,
  16.     idRegT,
  17.     idImm,
  18.     idStepPc,
  19.     idUCmd
  20.     );
  21.  
  22. input           clk;        //clock
  23. input[31:0]     istrWord;   //source instruction word
  24. input[15:0]     regCsFl;    //current SR/FPSCR
  25.  
  26. output[6:0]     idRegN;
  27. output[6:0]     idRegS;
  28. output[6:0]     idRegT;
  29. output[31:0]    idImm;
  30. output[3:0]     idStepPc;
  31.  
  32. output[7:0]     idUCmd;
  33.  
  34.  
  35. reg         isOp32;     //opcode is 32-bit
  36. reg         isOp8E;     //8Ezz_zzzz
  37. reg         isOpCE;     //CEzz_zzzz
  38. reg         isOpXE;     //8Ezz_zzzz || CEzz_zzzz
  39.  
  40. reg         isOpCC0;    //CC0e_zzzz
  41. reg         isOpCC3;    //CC3e_zzzz
  42. reg[3:0]    opCCe;
  43. reg         opPsDQ;
  44. reg         opPwDQ;
  45. reg         opPlDQ;
  46. reg         opJQ;
  47.  
  48. reg[7:0] opPfxImm;
  49. reg[15:0] opCmdWord;
  50.  
  51. reg[6:0] opRegN;
  52. reg[6:0] opRegS;
  53. reg[6:0] opRegT;    //Index for mem ops
  54. reg[31:0] opImm;    //Disp for mem ops
  55. reg[7:0] opUCmd;
  56.  
  57. assign  idRegN = opRegN;
  58. assign  idRegS = opRegS;
  59. assign  idRegT = opRegT;
  60. assign  idImm = opImm;
  61. assign  idUCmd = opUCmd;
  62.  
  63. // reg[6:0] tOpRegDflN;
  64. // reg[6:0] tOpRegDflM;
  65.  
  66. // reg          tOpDflRns;
  67. // reg          tOpDflRnst;
  68.  
  69. reg[4:0]    tOpDecXfrm;
  70. reg[3:0]    tOpDecXfrmZx;
  71.  
  72.  
  73. always @ (clk)
  74. begin
  75.  
  76.     idStepPc = 2;
  77.    
  78.     opPfxImm=0;
  79.     opCmdWord=0;
  80.  
  81.     opRegN=0;
  82.     opRegS=0;
  83.     opRegT=0;
  84.     opUCmd=UCMD_UDBRK;
  85.     opImm=0;
  86.  
  87.  
  88.     isOp32=0;
  89.     isOp8E=0;
  90.     isOpCE=0;
  91.     isOpXE=0;
  92.     isOpCC0=0;
  93.     isOpCC3=0;
  94.     opCCe=0;
  95.     opPsDQ=regCsFl[6];
  96.     opPwDQ=opPsDQ;
  97.     opPlDQ=0;
  98.     opJQ=regCsFl[5];
  99.  
  100.     case(istrWord[15:8])
  101.         8'h8A: begin
  102.             isOp32=1;
  103.             opCmdWord=istrWord[15:0];
  104.            
  105.             opImm[31:24]=istrWord[7]?8'hFF:8'h00;
  106.             opImm[23:16]=istrWord[7:0];
  107.             opImm[15: 0]=istrWord[31:16];
  108.         end
  109.  
  110.         8'h8E: begin
  111.             isOp32=1;
  112.             isOp8E=1;
  113.             isOpXE=1;
  114.             opPfxImm=istrWord[7:0];
  115.             opCmdWord=istrWord[31:16];
  116.         end
  117.  
  118.         8'hCC: begin
  119.             isOp32=1;
  120.             isOpCE=0;
  121.             isOpXE=0;
  122.             isOpCC0 = (istrWord[7:4]==4'h0);
  123.             isOpCC3 = (istrWord[7:4]==4'h3);
  124.             opCCe=istrWord[3:0];
  125.             opPsDQ=istrWord[3];
  126.             opPwDQ=0;
  127.             opPlDQ=opPsDQ;
  128.             opPfxImm=0;
  129.             opCmdWord=istrWord[31:16];
  130.         end
  131.  
  132.         8'hCE: begin
  133.             isOp32=1;
  134.             isOpCE=1;
  135.             isOpXE=1;
  136.             opPfxImm=istrWord[7:0];
  137.             opCmdWord=istrWord[31:16];
  138.             opPsDQ=istrWord[7];
  139.             opPwDQ=0;
  140.             opPlDQ=0;
  141.         end
  142.  
  143.         default: begin
  144.             opCmdWord=istrWord[15:0];
  145.         end
  146.     endcase
  147.  
  148.     if(isOp32)
  149.         idStepPc = 4;
  150.  
  151.     opRegN=UREG_ZZR;
  152.     opRegS=UREG_ZZR;
  153.     opRegT=UREG_ZZR;
  154.  
  155. //  tOpRegDflN={3'h0, opCmdWord[11:8]};
  156. //  tOpRegDflM={3'h0, opCmdWord[ 7:4]};
  157.    
  158.     tOpDecXfrm=UXFORM_CST;
  159.     tOpDecXfrmZx=UXFORMZX_SX;
  160. //  tOpDflRns=0;
  161. //  tOpDflRnst=0;
  162.  
  163.     casez(opCmdWord[15:0])
  164.  
  165.         16'h0zz0: begin
  166.             /* Unimplemented, 2A */
  167.         end
  168.  
  169.         16'h0zz1: begin
  170.             /* Unimplemented, 2A */
  171.         end
  172.            
  173.         16'h0zz2: begin     //0xx2, STC
  174.             opUCmd=UCMD_MOV_RR;     tOpDecXfrm=UXFORM_ARI_NS;
  175.             tOpDecXfrmZx=UXFORMZX_CR;
  176.         end
  177.  
  178.         16'h0zz4: begin     //0xx4
  179.             opUCmd=UCMD_MOVB_RM;    tOpDecXfrm=UXFORM_MOV_NSO;
  180.         end
  181.  
  182.         16'h0zz5: begin     //0xx5
  183.             opUCmd = opPwDQ ? UCMD_MOVQ_RM : UCMD_MOVW_RM;
  184.             tOpDecXfrm=UXFORM_MOV_NSO;
  185.         end
  186.  
  187.         16'h0zz6: begin     //0xx6
  188.             opUCmd = opPlDQ ? UCMD_MOVQ_RM : UCMD_MOVL_RM;
  189.             tOpDecXfrm=UXFORM_MOV_NSO;
  190.         end
  191.  
  192.         16'h0zz7: begin     //0xx7
  193.             if(isOpXE)
  194.             begin
  195.                 opUCmd=UCMD_MOVQ_RM;    tOpDecXfrm=UXFORM_MOV_NSO;
  196.             end
  197.             else
  198.             begin
  199.                 opUCmd=UCMD_ALU_DMULS;  tOpDecXfrm=UXFORM_ARI_ST;
  200.             end
  201.         end
  202.  
  203.         /* 0xx8 */
  204.             16'h0z08: begin     //0x08
  205.                 opUCmd=UCMD_ALU_SPOP;
  206.                 opImm[7:0]=UCMDP_ALU_CLRT;
  207.                 tOpDecXfrm=UXFORM_CST;
  208.             end
  209.             16'h0z18: begin     //0x18
  210.                 opUCmd=UCMD_ALU_SPOP;
  211.                 opImm[7:0]=UCMDP_ALU_SETT;
  212.                 tOpDecXfrm=UXFORM_CST;
  213.             end
  214.             16'h0z28: begin     //0x28
  215.                 opUCmd=UCMD_ALU_SPOP;
  216.                 opImm[7:0]=UCMDP_ALU_CLRMAC;
  217.                 tOpDecXfrm=UXFORM_CST;
  218.             end
  219.             16'h0z38: begin     //0x38
  220.                 opUCmd=UCMD_ALU_SPOP;
  221.                 opImm[7:0]=UCMDP_ALU_LDTLB;
  222.                 tOpDecXfrm=UXFORM_CST;
  223.             end
  224.             16'h0z48: begin     //0x48
  225.                 opUCmd=UCMD_ALU_SPOP;
  226.                 opImm[7:0]=UCMDP_ALU_CLRS;
  227.                 tOpDecXfrm=UXFORM_CST;
  228.             end
  229.             16'h0z58: begin     //0x58
  230.                 opUCmd=UCMD_ALU_SPOP;
  231.                 opImm[7:0]=UCMDP_ALU_SETS;
  232.                 tOpDecXfrm=UXFORM_CST;
  233.             end
  234.             16'h0z68: begin     //0x68
  235.                 opUCmd=UCMD_ALU_SPOP;
  236.                 opImm[7:0]=UCMDP_ALU_NOTT;
  237.                 tOpDecXfrm=UXFORM_CST;
  238.             end
  239.  
  240.         /* 0xx9 */
  241.             16'h0z09: begin     //0x09
  242.                 opUCmd=UCMD_NONE;       tOpDecXfrm=UXFORM_Z;
  243.             end
  244.             16'h0z19: begin     //0x19
  245.                 opUCmd=UCMD_ALU_SPOP;
  246.                 opImm[7:0]=UCMDP_ALU_DIV0U;
  247.                 tOpDecXfrm=UXFORM_CST;
  248.             end
  249.             16'h0z29: begin     //0x29
  250.                 opUCmd=UCMD_ALU_MOVT;   tOpDecXfrm=UXFORM_N;
  251.             end
  252.             16'h0z39: begin     //0x39
  253.                 opUCmd=UCMD_ALU_MOVRT;  tOpDecXfrm=UXFORM_N;
  254.             end
  255.  
  256.         16'h0zzA: begin     //0xxA
  257.             opUCmd=UCMD_MOV_RR;     tOpDecXfrm=UXFORM_ARI_NS;
  258.             tOpDecXfrmZx=UXFORMZX_SR;
  259.         end
  260.  
  261.         /* 0xxB */
  262.             16'h0z0B: begin     //0z0B
  263.                 opUCmd=UCMD_RTS;        tOpDecXfrm=UXFORM_Z;
  264.             end
  265.  
  266.             16'h0z1B: begin     //0x1B
  267.                 opUCmd=UCMD_ALU_SPOP;
  268.                 opImm[7:0]=UCMDP_ALU_SLEEP;
  269.                 tOpDecXfrm=UXFORM_CST;
  270.             end
  271.  
  272.             16'h0z2B: begin     //0z2B
  273.                 opUCmd=UCMD_RTE;        tOpDecXfrm=UXFORM_Z;
  274.             end
  275.  
  276.             16'h0z3B: begin     //0z3B
  277.                 opUCmd=UCMD_UDBRK;      tOpDecXfrm=UXFORM_Z;
  278.                 opImm=1;
  279.                 if(opCmdWord[11:8]==4'hF)
  280.                 begin
  281.                     opUCmd=UCMD_NONE;
  282.                     idStepPc=0;
  283.                 end
  284.             end
  285.  
  286.             16'h0z6B: begin     //0z6B
  287.                 opUCmd=UCMD_RTSN;       tOpDecXfrm=UXFORM_Z;
  288.             end
  289.  
  290.         16'h0zzC: begin     //0xxC
  291.             opUCmd=UCMD_MOVB_MR;    tOpDecXfrm=UXFORM_MOV_NSO;
  292.         end
  293.  
  294.         16'h0zzD: begin     //0xxD
  295.             opUCmd = opPwDQ ? UCMD_MOVQ_MR : UCMD_MOVW_MR;
  296.             tOpDecXfrm=UXFORM_MOV_NSO;
  297.         end
  298.  
  299.         16'h0zzE: begin     //0xxE
  300.             opUCmd = opPlDQ ? UCMD_MOVQ_MR : UCMD_MOVL_MR;
  301.             tOpDecXfrm=UXFORM_MOV_NSO;
  302.         end
  303.  
  304.         16'h0zzF: begin     //0xxF
  305.             //MAC.L
  306.         end
  307.  
  308.         16'h1zzz: begin     //1xxx
  309.             opUCmd =  opPlDQ ? UCMD_MOVQ_RM : UCMD_MOVL_RM;
  310.             tOpDecXfrm=UXFORM_MOV_NSJ;
  311.         end
  312.  
  313.         16'h2zz0: begin     //2xx0
  314.             opUCmd=UCMD_MOVB_RM;    tOpDecXfrm=UXFORM_MOV_NS;
  315.         end
  316.         16'h2zz1: begin     //2xx1
  317.             opUCmd = opPwDQ ? UCMD_MOVQ_RM : UCMD_MOVW_RM;
  318.             tOpDecXfrm=UXFORM_MOV_NS;
  319.         end
  320.         16'h2zz2: begin     //2xx2
  321.             opUCmd = opPlDQ ? UCMD_MOVQ_RM : UCMD_MOVL_RM;
  322.             tOpDecXfrm=UXFORM_MOV_NS;
  323.         end
  324.         16'h2zz3: begin     //2xx3
  325.             opUCmd=UCMD_CASL;       tOpDecXfrm=UXFORM_MOV_NSO;
  326.         end
  327.         16'h2zz4: begin     //2xx4
  328.             opUCmd=UCMD_MOVB_RM;    tOpDecXfrm=UXFORM_MOV_NSDEC;
  329.             tOpDecXfrmZx=UXFORMZX_PDEC;
  330.         end
  331.         16'h2zz5: begin     //2xx5
  332.             opUCmd = opPwDQ ? UCMD_MOVQ_RM : UCMD_MOVW_RM;
  333.             tOpDecXfrm=UXFORM_MOV_NSDEC;
  334.             tOpDecXfrmZx=UXFORMZX_PDEC;
  335.         end
  336.         16'h2zz6: begin     //2xx6
  337.             opUCmd = opPlDQ ? UCMD_MOVQ_RM : UCMD_MOVL_RM;
  338.             tOpDecXfrm=UXFORM_MOV_NSDEC;
  339.             tOpDecXfrmZx=UXFORMZX_PDEC;
  340.         end
  341.         16'h2zz7: begin     //2xx7
  342.             opUCmd=UCMD_ALU_DIV0S;  tOpDecXfrm=UXFORM_ARI_ST;
  343.         end
  344.         16'h2zz8: begin     //2xx8
  345.             opUCmd=UCMD_CMP_TST;    tOpDecXfrm=UXFORM_CMP_ST;
  346.             tOpDecXfrmZx=UXFORMZX_ZX;
  347.         end
  348.         16'h2zz9: begin     //2xx9
  349.             opUCmd=UCMD_ALU_AND;    tOpDecXfrm=UXFORM_ARI_NST;
  350.             tOpDecXfrmZx=UXFORMZX_ZX;
  351.         end
  352.         16'h2zzA: begin     //2xxA
  353.             opUCmd=UCMD_ALU_XOR;    tOpDecXfrm=UXFORM_ARI_NST;
  354.             tOpDecXfrmZx=UXFORMZX_ZX;
  355.         end
  356.         16'h2zzB: begin     //2xxB
  357.             opUCmd=UCMD_ALU_OR;     tOpDecXfrm=UXFORM_ARI_NST;
  358.             tOpDecXfrmZx=UXFORMZX_ZX;
  359.         end
  360.         16'h2zzC: begin     //2xxC
  361.             opUCmd=UCMD_ALU_CMPSTR; tOpDecXfrm=UXFORM_ARI_NST;
  362.         end
  363.         16'h2zzD: begin     //2xxD
  364.             opUCmd=UCMD_ALU_XTRCT;  tOpDecXfrm=UXFORM_ARI_NST;
  365.         end
  366.         16'h2zzE: begin     //2xxE
  367.             opUCmd=UCMD_ALU_MULUW;  tOpDecXfrm=UXFORM_ARI_ST;
  368.         end
  369.         16'h2zzF: begin     //2xxF
  370.             opUCmd=UCMD_ALU_MULSW;  tOpDecXfrm=UXFORM_ARI_ST;
  371.         end
  372.  
  373.         16'h3zz0: begin     //3xx0
  374.             opUCmd=opPsDQ ? UCMD_CMPQ_EQ : UCMD_CMP_EQ;
  375.             tOpDecXfrm=UXFORM_CMP_ST;
  376.         end
  377.         16'h3zz1: begin     //3xx1
  378.         end
  379.         16'h3zz2: begin     //3xx2
  380.             opUCmd=opPsDQ ? UCMD_CMPQ_HS : UCMD_CMP_HS;
  381.             tOpDecXfrm=UXFORM_CMP_ST;
  382.         end
  383.         16'h3zz3: begin     //3xx3
  384.             opUCmd=opPsDQ ? UCMD_CMPQ_GE : UCMD_CMP_GE;
  385.             tOpDecXfrm=UXFORM_CMP_ST;
  386.         end
  387.         16'h3zz4: begin     //3xx4
  388.             opUCmd=UCMD_ALU_DIV1;       tOpDecXfrm=UXFORM_ARI_NST;
  389.         end
  390.         16'h3zz5: begin     //3xx5
  391.             opUCmd=UCMD_ALU_DMULU;  tOpDecXfrm=UXFORM_ARI_ST;
  392.         end
  393.         16'h3zz6: begin     //3xx6
  394.             opUCmd=opPsDQ ? UCMD_CMPQ_HI : UCMD_CMP_HI;
  395.             tOpDecXfrm=UXFORM_CMP_ST;
  396.         end
  397.         16'h3zz7: begin     //3xx7
  398.             opUCmd=opPsDQ ? UCMD_CMPQ_GT : UCMD_CMP_GT;
  399.             tOpDecXfrm=UXFORM_CMP_ST;
  400.         end
  401.         16'h3zz8: begin     //3xx8
  402.             opUCmd=UCMD_ALU_SUB;    tOpDecXfrm=UXFORM_ARI_NST;
  403.             tOpDecXfrmZx=UXFORMZX_ZX;
  404.         end
  405.         16'h3zz9: begin     //3xx9
  406.         end
  407.         16'h3zzA: begin     //3xxA
  408.             opUCmd=UCMD_ALU_SUBC;   tOpDecXfrm=UXFORM_ARI_NST;
  409.             tOpDecXfrmZx=UXFORMZX_ZX;
  410.         end
  411.         16'h3zzB: begin     //3xxB
  412.             opUCmd=UCMD_ALU_SUBV;   tOpDecXfrm=UXFORM_ARI_NST;
  413.             tOpDecXfrmZx=UXFORMZX_ZX;
  414.         end
  415.         16'h3zzC: begin     //3xxC
  416.             opUCmd=UCMD_ALU_ADD;    tOpDecXfrm=UXFORM_ARI_NST;
  417.             tOpDecXfrmZx=UXFORMZX_ZX;
  418.         end
  419.         16'h3zzD: begin     //3xxD
  420.             opUCmd=UCMD_ALU_DMULS;  tOpDecXfrm=UXFORM_ARI_ST;
  421.         end
  422.         16'h3zzE: begin     //3xxE
  423.             opUCmd=UCMD_ALU_ADDC;   tOpDecXfrm=UXFORM_ARI_NST;
  424.         end
  425.         16'h3zzF: begin     //3xxF
  426.             opUCmd=UCMD_ALU_ADDV;   tOpDecXfrm=UXFORM_ARI_NST;
  427.         end
  428.  
  429.         /* 4xx0 */
  430.             16'h4z00: begin     //4x00
  431.                 opUCmd=UCMD_ALU_SHLL;   tOpDecXfrm=UXFORM_N;
  432.             end
  433.             16'h4z10: begin     //4x10
  434.                 opUCmd=UCMD_ALU_DT;     tOpDecXfrm=UXFORM_N;
  435.             end
  436.             16'h4z20: begin     //4x20
  437.                 opUCmd=UCMD_ALU_SHAL;   tOpDecXfrm=UXFORM_N;
  438.             end
  439.  
  440.         /* 4xx1 */
  441.             16'h4z00: begin     //4x01
  442.                 opUCmd=UCMD_ALU_SHLR;   tOpDecXfrm=UXFORM_N;
  443.             end
  444.             16'h4z10: begin     //4x11
  445.                 opUCmd=opPsDQ ? UCMD_CMPQ_GE : UCMD_CMP_GE;
  446.                 tOpDecXfrm=UXFORM_M;
  447.             end
  448.             16'h4z20: begin     //4x21
  449.                 opUCmd=UCMD_ALU_SHAR;   tOpDecXfrm=UXFORM_N;
  450.             end
  451.  
  452.         16'h4zz2: begin     //4xx2
  453.             opUCmd = opJQ ? UCMD_MOVQ_RM : UCMD_MOVL_RM;
  454.             tOpDecXfrm=UXFORM_MOV_NSDEC;
  455.             tOpDecXfrmZx=UXFORMZX_SR;
  456.         end
  457.         16'h4zz3: begin     //4xx3
  458.             opUCmd = opJQ ? UCMD_MOVQ_RM : UCMD_MOVL_RM;
  459.             tOpDecXfrm=UXFORM_MOV_NSDEC;
  460.             tOpDecXfrmZx=UXFORMZX_CR;
  461.         end
  462.  
  463.         /* 4xx4 */
  464.             16'h4z04: begin     //4x00
  465.                 opUCmd=UCMD_ALU_ROTL;   tOpDecXfrm=UXFORM_N;
  466.             end
  467.             16'h4z14: begin     //4x10
  468. //              opUCmd=UCMD_ALU_DT;     tOpDecXfrm=UXFORM_N;
  469.             end
  470.             16'h4z24: begin     //4x20
  471.                 opUCmd=UCMD_ALU_ROTCL;  tOpDecXfrm=UXFORM_N;
  472.             end
  473.  
  474.         /* 4xx5 */
  475.             16'h4z05: begin     //4x01
  476.                 opUCmd=UCMD_ALU_ROTR;   tOpDecXfrm=UXFORM_N;
  477.             end
  478.             16'h4z15: begin     //4x11
  479.                 opUCmd=opPsDQ ? UCMD_CMPQ_GT : UCMD_CMP_GT;
  480.                 tOpDecXfrm=UXFORM_M;
  481.             end
  482.             16'h4z25: begin     //4x21
  483.                 opUCmd=UCMD_ALU_ROTCR;  tOpDecXfrm=UXFORM_N;
  484.             end
  485.  
  486.         16'h4zz6: begin     //4xx6
  487.             opUCmd = opJQ ? UCMD_MOVQ_MR : UCMD_MOVL_MR;
  488.             tOpDecXfrm=UXFORM_MOV_NSDEC;
  489.             tOpDecXfrmZx=UXFORMZX_RS;
  490.         end
  491.         16'h4zz7: begin     //4xx7
  492.             opUCmd = opJQ ? UCMD_MOVQ_RM : UCMD_MOVL_MR;
  493.             tOpDecXfrm=UXFORM_MOV_NSDEC;
  494.             tOpDecXfrmZx=UXFORMZX_RC;
  495.         end
  496.  
  497.         /* 4xx8 */
  498.             16'h4z08: begin     //4x08
  499.                 opUCmd=UCMD_ALU_SHLD;   tOpDecXfrm=UXFORM_N_C;
  500.                 opImm=2;
  501.             end
  502.             16'h4z18: begin     //4x18
  503.                 opUCmd=UCMD_ALU_SHLD;   tOpDecXfrm=UXFORM_N_C;
  504.                 opImm=8;
  505.             end
  506.             16'h4z28: begin     //4x28
  507.                 opUCmd=UCMD_ALU_SHLD;   tOpDecXfrm=UXFORM_N_C;
  508.                 opImm=16;
  509.             end
  510.  
  511.         /* 4xx9 */
  512.             16'h4z09: begin     //4x09
  513.                 opUCmd=UCMD_ALU_SHLD;   tOpDecXfrm=UXFORM_N_C;
  514.                 opImm=-2;
  515.             end
  516.             16'h4z19: begin     //4x19
  517.                 opUCmd=UCMD_ALU_SHLD;   tOpDecXfrm=UXFORM_N_C;
  518.                 opImm=-8;
  519.             end
  520.             16'h4z29: begin     //4x29
  521.                 opUCmd=UCMD_ALU_SHLD;   tOpDecXfrm=UXFORM_N_C;
  522.                 opImm=-16;
  523.             end
  524.  
  525.         16'h4zzA: begin     //4xxA, LDS
  526.             opUCmd=UCMD_MOV_RR;     tOpDecXfrm=UXFORM_ARI_NS;
  527.             tOpDecXfrmZx=UXFORMZX_RS;
  528.         end
  529.  
  530.         /* 4xxB */
  531.             16'h4z0B: begin
  532.                 opUCmd=UCMD_JSR;    tOpDecXfrm=UXFORM_M;
  533.             end
  534.  
  535.             16'h4z2B: begin
  536.                 opUCmd=UCMD_JMP;    tOpDecXfrm=UXFORM_M;
  537.             end
  538.             16'h4z3B: begin
  539.             end
  540.             16'h4z4B: begin
  541.                 opUCmd=UCMD_JSRN;   tOpDecXfrm=UXFORM_M;
  542.             end
  543.  
  544.         16'h4zzC: begin     //4xxC
  545.             opUCmd=opPsDQ ? UCMD_ALU_SHADQ : UCMD_ALU_SHAD;
  546.             tOpDecXfrm=UXFORM_ARI_NST;
  547.             tOpDecXfrmZx=UXFORMZX_SX;
  548.         end
  549.         16'h4zzD: begin     //4xxD
  550.             opUCmd=opPsDQ ? UCMD_ALU_SHLDQ : UCMD_ALU_SHLD;
  551.             tOpDecXfrm=UXFORM_ARI_NST;
  552.             tOpDecXfrmZx=UXFORMZX_SX;
  553.         end
  554.         16'h4zzE: begin     //4xxE, LDC
  555.             opUCmd=UCMD_MOV_RR;     tOpDecXfrm=UXFORM_ARI_NS;
  556.             tOpDecXfrmZx=UXFORMZX_RC;
  557.         end
  558.  
  559.         16'h5zzz: begin     //5xxx
  560.             opUCmd = opPlDQ ? UCMD_MOVQ_MR : UCMD_MOVL_MR;
  561.             tOpDecXfrm=UXFORM_MOV_NSJ;
  562.         end
  563.  
  564.         16'h6zz0: begin     //6xx0
  565.             opUCmd=UCMD_MOVB_MR;    tOpDecXfrm=UXFORM_MOV_NS;
  566.         end
  567.         16'h6zz1: begin     //6xx1
  568.             opUCmd = opPwDQ ? UCMD_MOVQ_MR : UCMD_MOVW_MR;
  569.             tOpDecXfrm=UXFORM_MOV_NS;
  570.         end
  571.         16'h6zz2: begin     //6xx2
  572.             opUCmd = opPlDQ ? UCMD_MOVQ_MR : UCMD_MOVL_MR;
  573.             tOpDecXfrm=UXFORM_MOV_NS;
  574.         end
  575.         16'h6zz3: begin     //6xx3
  576.             if(isOpXE)  begin
  577.                 opUCmd=UCMD_MOVQ_MR;    tOpDecXfrm=UXFORM_MOV_NS;
  578.             end else begin
  579.                 opUCmd=UCMD_MOV_RR;     tOpDecXfrm=UXFORM_ARI_NS;
  580.             end
  581.         end
  582.         16'h6zz4: begin     //6xx4
  583.             if(isOpXE) begin
  584.                 opUCmd=UCMD_LEAB_MR;    tOpDecXfrm=UXFORM_MOV_NSO;
  585.             end else begin
  586.                 opUCmd=UCMD_MOVB_MR;    tOpDecXfrm=UXFORM_MOV_NSDEC;
  587.                 tOpDecXfrmZx=UXFORMZX_PINC;
  588.             end
  589.         end
  590.         16'h6zz5: begin     //6xx5
  591.             if(isOpXE)  begin
  592.                 opUCmd=UCMD_LEAW_MR;    tOpDecXfrm=UXFORM_MOV_NSO;
  593.             end else begin
  594.                 opUCmd = opPwDQ ? UCMD_MOVQ_MR : UCMD_MOVW_MR;
  595.                 tOpDecXfrm=UXFORM_MOV_NSDEC;
  596.                 tOpDecXfrmZx=UXFORMZX_PINC;
  597.             end
  598.         end
  599.         16'h6zz6: begin     //6xx6
  600.             if(isOpXE)  begin
  601.                 opUCmd=UCMD_LEAL_MR;    tOpDecXfrm=UXFORM_MOV_NSO;
  602.             end else begin
  603.                 opUCmd =  opPlDQ ? UCMD_MOVQ_MR : UCMD_MOVL_MR;
  604.                 tOpDecXfrm=UXFORM_MOV_NSDEC;
  605.                 tOpDecXfrmZx=UXFORMZX_PINC;
  606.             end
  607.         end
  608.         16'h6zz7: begin
  609.             if(isOpXE)  begin
  610.                 opUCmd=UCMD_LEAQ_MR;    tOpDecXfrm=UXFORM_MOV_NSO;
  611.             end else begin
  612.                 opUCmd=UCMD_ALU_NOT;    tOpDecXfrm=UXFORM_ARI_NS;
  613.             end
  614.         end
  615.         16'h6zz8: begin
  616.             if(isOpXE)  begin
  617.                 opUCmd=UCMD_LEAB_MR;    tOpDecXfrm=UXFORM_MOV_NS;
  618.             end else begin
  619.                 opUCmd=UCMD_ALU_SWAPB;  tOpDecXfrm=UXFORM_ARI_NS;
  620.             end
  621.         end
  622.         16'h6zz9: begin
  623.             if(isOpXE)  begin
  624.                 opUCmd=UCMD_LEAW_MR;    tOpDecXfrm=UXFORM_MOV_NS;
  625.             end else begin
  626.                 opUCmd=UCMD_ALU_SWAPW;  tOpDecXfrm=UXFORM_ARI_NS;
  627.             end
  628.         end
  629.         16'h6zzA: begin
  630.             if(isOpXE)  begin
  631.                 opUCmd=UCMD_LEAL_MR;    tOpDecXfrm=UXFORM_MOV_NS;
  632.             end else begin
  633.                 opUCmd=UCMD_ALU_NEGC;   tOpDecXfrm=UXFORM_ARI_NS;
  634.             end
  635.         end
  636.         16'h6zzB: begin
  637.             if(isOpXE)  begin
  638.                 opUCmd=UCMD_LEAQ_MR;    tOpDecXfrm=UXFORM_MOV_NS;
  639.             end else begin
  640.                 opUCmd=UCMD_ALU_NEG;    tOpDecXfrm=UXFORM_ARI_NS;
  641.             end
  642.         end
  643.         16'h6zzC: begin
  644.             if(isOpXE)  begin
  645.                 opUCmd=UCMD_MOVUB_MR;   tOpDecXfrm=UXFORM_MOV_NS;
  646.             end else begin
  647.                 opUCmd=UCMD_ALU_EXTUB;  tOpDecXfrm=UXFORM_ARI_NS;
  648.             end
  649.         end
  650.         16'h6zzD: begin
  651.             if(isOpXE)  begin
  652.                 opUCmd=UCMD_MOVUW_MR;   tOpDecXfrm=UXFORM_MOV_NS;
  653.             end else begin
  654.                 opUCmd=UCMD_ALU_EXTUW;  tOpDecXfrm=UXFORM_ARI_NS;
  655.             end
  656.         end
  657.         16'h6zzE: begin
  658.             if(isOpXE)  begin
  659.                 opUCmd=UCMD_MOVUL_MR;   tOpDecXfrm=UXFORM_MOV_NS;
  660.             end else begin
  661.                 opUCmd=UCMD_ALU_EXTSB;  tOpDecXfrm=UXFORM_ARI_NS;
  662.             end
  663.         end
  664.         16'h6zzF: begin
  665.             if(isOpXE)  begin
  666.                 opUCmd=UCMD_MOVQ_MR;    tOpDecXfrm=UXFORM_MOV_NS;
  667.             end else begin
  668.                 opUCmd=UCMD_ALU_EXTSW;  tOpDecXfrm=UXFORM_ARI_NS;
  669.             end
  670.         end
  671.  
  672.         16'h7zzz: begin     //7xxx
  673.             opUCmd=UCMD_ALU_ADD;    tOpDecXfrm=UXFORM_ARI_NNI;
  674.         end
  675.  
  676.         16'h82zz: begin     //82xx
  677.             opUCmd=UCMD_BRAN;       tOpDecXfrm=UXFORM_BR_D8;
  678.         end
  679.         16'h83zz: begin     //83xx
  680.             if(isOpXE)  begin
  681.                 opUCmd=UCMD_BSRN;   tOpDecXfrm=UXFORM_BR_D8;
  682.             end else begin
  683.             end
  684.         end
  685.  
  686.         16'h89zz: begin     //89xx
  687.             opUCmd=UCMD_BT;     tOpDecXfrm=UXFORM_BR_D8;
  688.         end
  689.         16'h8Azz: begin     //8Axx-xxxx
  690.             if(isOpXE)  begin
  691.     //          opUCmd=UCMD_BSRN;   tOpDecXfrm=UXFORM_BR_D8;
  692.             end else begin
  693.                 opRegN=UREG_R0;
  694.                 opUCmd=UCMD_MOV_RI;
  695.                 tOpDecXfrm=UXFORM_CST;
  696.             end
  697.         end
  698.         16'h8Bzz: begin     //8Bxx
  699.             opUCmd=UCMD_BF;     tOpDecXfrm=UXFORM_BR_D8;
  700.         end
  701.         16'h8Czz: begin     //8Cxx
  702.             /* Escape */
  703.         end
  704.         16'h8Dzz: begin     //8Dxx
  705.             opUCmd=UCMD_BTS;        tOpDecXfrm=UXFORM_BR_D8;
  706.         end
  707.         16'h8Ezz: begin     //8Exx
  708.             /* Escape */
  709.         end
  710.         16'h8Fzz: begin     //8Fxx
  711.             opUCmd=UCMD_BFS;        tOpDecXfrm=UXFORM_BR_D8;
  712.         end
  713.  
  714.         16'h9zzz: begin     //9xxx
  715.             if(isOpXE)
  716.             begin
  717.                 opUCmd=UCMD_ALU_LDSH16;
  718.                 tOpDecXfrm=UXFORM_ARI_NNI;
  719.             end
  720.             else
  721.             begin
  722.                 opRegN[3:0]=opCmdWord[11:8];
  723.                 opRegS=UREG_PCW;
  724.                 opRegT=UREG_ZZR;
  725.                 opImm[7:0]=opCmdWord[ 7:0];
  726.                 opUCmd=UCMD_MOVW_MR;
  727.                 tOpDecXfrm=UXFORM_CST;
  728.             end
  729.         end
  730.  
  731.         16'hAzzz: begin     //Axxx
  732.             opUCmd=UCMD_BRA;        tOpDecXfrm=UXFORM_BR_D12;
  733.         end
  734.  
  735.         16'hBzzz: begin     //Bxxx
  736.             opUCmd=UCMD_BSR;        tOpDecXfrm=UXFORM_BR_D12;
  737.         end
  738.  
  739.  
  740.         16'hC8zz: begin
  741.             opUCmd=opPsDQ ? UCMD_CMPQ_TST : UCMD_CMP_TST;
  742.             tOpDecXfrm=UXFORM_CMP_I8R0;
  743.         end
  744.         16'hC9zz: begin
  745.             opUCmd=UCMD_ALU_AND;    tOpDecXfrm=UXFORM_ARI_I8R0;
  746.         end
  747.         16'hCAzz: begin
  748.             opUCmd=UCMD_ALU_XOR;    tOpDecXfrm=UXFORM_ARI_I8R0;
  749.         end
  750.         16'hCBzz: begin
  751.             opUCmd=UCMD_ALU_OR;     tOpDecXfrm=UXFORM_ARI_I8R0;
  752.         end
  753.  
  754.         16'hDzzz: begin     //Dxxx
  755.             opRegN[3:0]=opCmdWord[11:8];
  756.             opRegS=UREG_PCL;
  757.             opRegT=UREG_ZZR;
  758.             opImm[7:0]=opCmdWord[ 7:0];
  759.             opUCmd=UCMD_MOVL_MR;
  760.             tOpDecXfrm=UXFORM_CST;
  761.         end
  762.  
  763.         16'hEzzz: begin     //Exxx
  764.             opUCmd=UCMD_MOV_RI;
  765.             tOpDecXfrm=UXFORM_ARI_NNI;
  766.         end
  767.  
  768.         default: begin end
  769.  
  770.     endcase
  771.  
  772.     case(tOpDecXfrm)
  773.  
  774.         UXFORM_CST: begin
  775.         end
  776.  
  777.         UXFORM_Z: begin
  778.         end
  779.  
  780.         UXFORM_N: begin
  781.     //      opRegN={3'h0, opCmdWord[11:8]};
  782.             opRegN={2'h0, opCCe[2], opCmdWord[11:8]};
  783.             opRegS=opRegN;
  784.         end
  785.  
  786.         UXFORM_M: begin
  787.     //      opRegS={3'h0, opCmdWord[11:8]};
  788.             opRegS={2'h0, opCCe[2], opCmdWord[11:8]};
  789.         end
  790.  
  791.         UXFORM_MOV_NS: begin
  792.             if(isOpCE)
  793.             begin
  794.                 opRegN = {2'h0, opPfxImm[7], opCmdWord[11:8]};
  795.                 opRegS = {2'h0, opPfxImm[6], opCmdWord[ 7:4]};
  796.                 opImm  = {26'h0, opPfxImm [ 5:0]};
  797.             end
  798.             else
  799.             if(isOp8E)
  800.             begin
  801.                 opRegN = {3'h0, opCmdWord[11:8]};
  802.                 opRegS = {3'h0, opCmdWord[ 7:4]};
  803.                 opImm  = {opPfxImm[7] ? 24'hF : 24'h0, opPfxImm [ 7:0]};
  804.             end
  805.             else
  806.             begin
  807.     //          opRegN={3'h0, opCmdWord[11:8]};
  808.     //          opRegS={3'h0, opCmdWord[ 7:4]};
  809.                 opRegN={2'h0, opCCe[2], opCmdWord[11:8]};
  810.                 opRegS={2'h0, opCCe[1], opCmdWord[ 7:4]};
  811.             end
  812.         end
  813.  
  814.         UXFORM_MOV_NSO: begin
  815.             if(isOpCE)
  816.             begin
  817.                 opRegN={2'h0, opPfxImm[6], opCmdWord[11:8]};
  818.                 opRegS={2'h0, opPfxImm[5], opCmdWord[ 7:4]};
  819.                 opRegT={2'h0, opPfxImm[4], opPfxImm [ 3:0]};
  820.             end
  821.             else if(isOp8E)
  822.             begin
  823.                 opRegN={3'h0, opCmdWord[11:8]};
  824.                 opRegS={3'h0, opCmdWord[ 7:4]};
  825.                 opRegT={3'h0, opPfxImm [ 7:4]};
  826.                 opImm={28'h0, opPfxImm [ 3:0]};
  827.             end
  828.             else
  829.             begin
  830.     //          opRegN={3'h0, opCmdWord[11:8]};
  831.     //          opRegS={3'h0, opCmdWord[ 7:4]};
  832.                 opRegN={2'h0, opCCe[2], opCmdWord[11:8]};
  833.                 opRegS={2'h0, opCCe[1], opCmdWord[ 7:4]};
  834.                 opRegT=UREG_R0;
  835.             end
  836.         end
  837.  
  838.         UXFORM_MOV_NSJ: begin
  839.             if(isOpCE)
  840.             begin
  841.                 opRegN = {2'h0, opPfxImm[6], opCmdWord[11:8]};
  842.                 opRegS = {2'h0, opPfxImm[5], opCmdWord[ 7:4]};
  843.                 opRegT = {2'h0, opPfxImm[4], opCmdWord[ 3:0]};
  844.                 opImm  = {28'h0, opPfxImm[ 3:0]};
  845.             end
  846.             else if(isOp8E)
  847.             begin
  848.                 opRegN = {3'h0, opCmdWord[11:8]};
  849.                 opRegS = {3'h0, opCmdWord[ 7:4]};
  850.                 opRegT = {3'h0, opCmdWord[ 3:0]};
  851.                 opImm  = {opPfxImm[7] ? 24'hF : 24'h0, opPfxImm [ 7:0]};
  852.             end
  853.             else
  854.             begin
  855.                 opRegN = { 2'h0, opCCe[2], opCmdWord[11:8]};
  856.                 opRegS = { 2'h0, opCCe[1], opCmdWord[ 7:4]};
  857.                 opImm  = {28'h0, opCmdWord[ 3:0]};
  858.             end
  859.         end
  860.  
  861.  
  862.         UXFORM_MOV_NSDEC: begin
  863.     //      opRegN=tOpRegDflN;      opRegS=tOpRegDflM;
  864.     //      if(tOpDecXfrmZx==UXFORMZX_PINC)
  865.     //          opRegT=UREG_MR_MEMINC;
  866.     //      else
  867.     //          opRegT=UREG_MR_MEMDEC;
  868.  
  869.             case(tOpDecXfrmZx)
  870.                 UXFORMZX_PDEC: begin
  871.                     opRegN={2'h0, opCCe[2], opCmdWord[11:8]};
  872.                     opRegS={2'h0, opCCe[1], opCmdWord[ 7:4]};
  873.                     opRegT=UREG_MR_MEMDEC;
  874.                 end
  875.  
  876.                 UXFORMZX_PINC: begin
  877.                     opRegN={2'h0, opCCe[2], opCmdWord[11:8]};
  878.                     opRegS={2'h0, opCCe[1], opCmdWord[ 7:4]};
  879.                     opRegT=UREG_MR_MEMINC;
  880.                 end
  881.  
  882.                 UXFORMZX_RS: begin
  883.                     opRegN={3'h6, opCmdWord[ 7:4]};
  884.                     opRegS={2'h0, opCCe[2], opCmdWord[11:8]};
  885.                     opRegT=UREG_MR_MEMINC;
  886.                 end
  887.                 UXFORMZX_RC: begin
  888.                     if(opCmdWord[11])
  889.                         opRegN={3'h2, 1'b0, opCmdWord[6:4]};
  890.                     else
  891.                         opRegN={3'h7, opCmdWord[7:4]};
  892.                     opRegS={2'h0, opCCe[2], opCmdWord[11:8]};
  893.                     opRegT=UREG_MR_MEMINC;
  894.                 end
  895.  
  896.                 UXFORMZX_SR: begin
  897.                     opRegN={2'h0, opCCe[2], opCmdWord[11:8]};
  898.                     opRegS={3'h6, opCmdWord[ 7:4]};
  899.                     opRegT=UREG_MR_MEMDEC;
  900.                 end
  901.                 UXFORMZX_CR: begin
  902.                     opRegN={2'h0, opCCe[2], opCmdWord[11:8]};
  903.                     if(opCmdWord[11])
  904.                         opRegS={3'h2, 1'b0, opCmdWord[6:4]};
  905.                     else
  906.                         opRegS={3'h7, opCmdWord[7:4]};
  907.                     opRegT=UREG_MR_MEMDEC;
  908.                 end
  909.  
  910.                 default: begin end
  911.  
  912.             endcase
  913.  
  914.         end
  915.  
  916.         UXFORM_ARI_NS: begin
  917.             case(tOpDecXfrmZx)
  918.                 UXFORMZX_RR: begin
  919.                     opRegN={2'h0, opCCe[2], opCmdWord[11:8]};
  920.                     opRegS={2'h0, opCCe[1], opCmdWord[ 7:4]};
  921.                 end
  922.  
  923.                 UXFORMZX_RS: begin
  924.                     opRegN={3'h6, opCmdWord[ 7:4]};
  925.                     opRegS={2'h0, opCCe[2], opCmdWord[11:8]};
  926.                 end
  927.                 UXFORMZX_RC: begin
  928.                     if(opCmdWord[11])
  929.                         opRegN={3'h2, 1'b0, opCmdWord[6:4]};
  930.                     else
  931.                         opRegN={3'h7, opCmdWord[7:4]};
  932.                     opRegS={2'h0, opCCe[2], opCmdWord[11:8]};
  933.                 end
  934.  
  935.                 UXFORMZX_SR: begin
  936.                     opRegN={2'h0, opCCe[2], opCmdWord[11:8]};
  937.                     opRegS={3'h6, opCmdWord[ 7:4]};
  938.                 end
  939.                 UXFORMZX_CR: begin
  940.                     opRegN={2'h0, opCCe[2], opCmdWord[11:8]};
  941.                     if(opCmdWord[11])
  942.                         opRegS={3'h2, 1'b0, opCmdWord[6:4]};
  943.                     else
  944.                         opRegS={3'h7, opCmdWord[7:4]};
  945.                 end
  946.  
  947.                 default: begin end
  948.  
  949.             endcase
  950.         end
  951.  
  952.         UXFORM_ARI_NST: begin
  953.             if(isOpCE)
  954.             begin
  955.     //          opRegN={3'h0, opCmdWord[11:8]};
  956.     //          opRegS={3'h0, opCmdWord[ 7:4]};
  957.                 opRegN={2'h0, opPfxImm[7], opCmdWord[11:8]};
  958.                 opRegS={2'h0, opPfxImm[6], opCmdWord[ 7:4]};
  959.                 opRegT=UREG_MR_IMM;
  960.                 opImm[5:0]=opPfxImm [ 5:0];
  961.  
  962.                 case(tOpDecXfrmZx)
  963.                     UXFORMZX_SX: opImm[31:6]=opPfxImm[5] ?
  964.                         26'h3FFFFFF : 26'h0000000;
  965.                     UXFORMZX_ZX: opImm[31:6]=0;
  966.                     UXFORMZX_NX: opImm[31:6]=26'h3FFFFFF;
  967.                     default: begin end
  968.                 endcase
  969.             end
  970.             else
  971.             if(isOp8E)
  972.             begin
  973.                 opRegN={3'h0, opCmdWord[11:8]};
  974.                 opRegS={3'h0, opCmdWord[ 7:4]};
  975.                 opRegT=UREG_MR_IMM;
  976.                 opImm[7:0]=opPfxImm [ 7:0];
  977.  
  978.                 case(tOpDecXfrmZx)
  979.                     UXFORMZX_SX: opImm[31:8]=opPfxImm[7]?24'hFFFFFF:24'h000000;
  980.                     UXFORMZX_ZX: opImm[31:8]=0;
  981.                     UXFORMZX_NX: opImm[31:8]=24'hFFFFFF;
  982.                     default: begin end
  983.                 endcase
  984.             end
  985.             else
  986.             begin
  987.     //          opRegN={3'h0, opCmdWord[11:8]};
  988.     //          opRegS={3'h0, opCmdWord[11:8]};
  989.     //          opRegT={3'h0, opCmdWord[ 7:4]};
  990.                 opRegN={2'h0, opCCe[2], opCmdWord[11:8]};
  991.                 opRegS={2'h0, opCCe[2], opCmdWord[11:8]};
  992.                 opRegT={2'h0, opCCe[1], opCmdWord[ 7:4]};
  993.             end
  994.         end
  995.  
  996.         UXFORM_CMP_ST: begin
  997.             if(isOp8E)
  998.             begin
  999.                 opRegS={3'h0, opCmdWord[11:8]};
  1000.                 opRegT=UREG_MR_IMM;
  1001.                 opImm[11:4]=opPfxImm [ 7:0];
  1002.                 opImm[ 3:0]=opCmdWord[ 7:4];
  1003.                 opImm[31:12]=opPfxImm[7]?20'hFFFFF:20'h00000;
  1004.             end
  1005.             else
  1006.             begin
  1007.     //          opRegS={3'h0, opCmdWord[11:8]};
  1008.     //          opRegT={3'h0, opCmdWord[ 7:4]};
  1009.                 opRegS={2'h0, opCCe[2], opCmdWord[11:8]};
  1010.                 opRegT={2'h0, opCCe[1], opCmdWord[ 7:4]};
  1011.             end
  1012.         end
  1013.  
  1014.         UXFORM_ARI_ST: begin
  1015.     //      opRegS={3'h0, opCmdWord[11:8]};
  1016.     //      opRegT={3'h0, opCmdWord[ 7:4]};
  1017.             opRegN={2'h0, opCCe[2], opCmdWord[11:8]};
  1018.             opRegS={2'h0, opCCe[1], opCmdWord[ 7:4]};
  1019.         end
  1020.  
  1021.         UXFORM_ARI_NNI: begin
  1022.             if(isOpXE)
  1023.             begin
  1024.                 opRegN={2'h0, isOpCE, opCmdWord[11:8]};
  1025.     //          opRegN={3'h0, opCmdWord[11:8]};
  1026.                 opRegS=opRegN;
  1027.                 opRegT=UREG_MR_IMM;
  1028.                 opImm[15:8]=opPfxImm [ 7:0];
  1029.                 opImm[ 7:0]=opCmdWord[ 7:0];
  1030.                 opImm[31:16]=opPfxImm[7]?16'hFFFF:16'h0000;
  1031.             end
  1032.             else
  1033.             begin
  1034.     //          opRegN={3'h0, opCmdWord[11:8]};
  1035.     //          opRegS={3'h0, opCmdWord[11:8]};
  1036.                 opRegN={2'h0, opCCe[2], opCmdWord[11:8]};
  1037.                 opRegS={2'h0, opCCe[2], opCmdWord[11:8]};
  1038.                 opRegT=UREG_MR_IMM;
  1039.                 opImm[7:0]=opCmdWord[ 7:0];
  1040.                 opImm[31:8]=opCmdWord[7]?24'hFFFFFF:24'h000000;
  1041.             end
  1042.         end
  1043.        
  1044.         UXFORM_BR_D8: begin
  1045.             if(isOpXE)
  1046.             begin
  1047.                 opImm[15:8]=opPfxImm [7:0];
  1048.                 opImm[ 7:0]=opCmdWord[7:0];
  1049.                 opImm[31:16]=opPfxImm[7]?16'hFFFF:16'h0000;
  1050.             end
  1051.             else
  1052.             begin
  1053.                 opImm[7:0]=opCmdWord[7:0];
  1054.                 opImm[31:8]=opCmdWord[7]?24'hFFFFFF:24'h000000;
  1055.             end
  1056.         end
  1057.  
  1058.         UXFORM_BR_D12: begin
  1059.             if(isOpXE)
  1060.             begin
  1061.                 opImm[19:12]=opPfxImm [ 7:0];
  1062.                 opImm[11: 0]=opCmdWord[11:0];
  1063.                 opImm[31:20]=opPfxImm[7]?12'hFFF:12'h000;
  1064.             end
  1065.             else
  1066.             begin
  1067.                 opImm[11: 0]=opCmdWord[11:0];
  1068.                 opImm[31:12]=opCmdWord[11]?20'hFFFFF:20'h00000;
  1069.             end
  1070.         end
  1071.  
  1072.         UXFORM_ARI_I8R0: begin
  1073.             if(isOpXE)
  1074.             begin
  1075.                 opRegN={3'h0, opCmdWord[7:4]};
  1076.                 opRegS=opRegN;
  1077.                 opRegT=UREG_MR_IMM;
  1078.  
  1079.                 opImm[11:4]=opPfxImm [7:0];
  1080.                 opImm[ 3:0]=opCmdWord[3:0];
  1081.     //          opImm[31:16]=opPfxImm[7]?16'hFFFF:16'h0000;
  1082.                 opImm[31:16]=0;
  1083.             end
  1084.             else
  1085.             begin
  1086.                 opRegN=UREG_R0;
  1087.                 opRegS=UREG_R0;
  1088.                 opRegT=UREG_MR_IMM;
  1089.  
  1090.                 opImm[7:0]=opCmdWord[7:0];
  1091.                 opImm[31:8]=0;
  1092.     //          opImm[31:8]=opCmdWord[7]?24'hFFFFFF:24'h000000;
  1093.             end
  1094.         end
  1095.  
  1096.         UXFORM_N_C: begin
  1097.     //      opRegN={3'h0, opCmdWord[11:8]};
  1098.             opRegN={2'h0, opCCe[2], opCmdWord[11:8]};
  1099.             opRegS=opRegN;
  1100.             opRegT=UREG_MR_IMM;
  1101.         end
  1102.  
  1103.         default: begin end
  1104.     endcase
  1105.  
  1106. end
  1107.  
  1108. endmodule
Advertisement
Add Comment
Please, Sign In to add comment