Цитата(ADA007 @ Feb 23 2011, 21:10)

А
это случайно не аналог Cortex-M1?
Нет.
Вот его операции АЛУ:
// Shift instructions
`ALU_OP_SLL: result_o = {1'b0, a_i << b_i[4:0]};
`ALU_OP_SRL: result_o = {1'b0, a_i >> b_i[4:0]};
`ALU_OP_SRA: result_o = {1'b0, {{32{a_i[31]}}, a_i } >> b_i[4:0]};
// Arithmetical instructions
`ALU_OP_ADD: if(signed_i) result_o = a_i + b_i; // Result may include a carry bit
else result_o = {1'b0, a_i + b_i};
`ALU_OP_SUB: if(signed_i) result_o = a_i - b_i; // Result may include a carry bit
else result_o = {1'b0, a_i - b_i};
// Logical instructions
`ALU_OP_AND: result_o = {1'b0, a_i & b_i};
`ALU_OP_OR: result_o = {1'b0, a_i | b_i};
`ALU_OP_XOR: result_o = {1'b0, a_i ^ b_i};
`ALU_OP_NOR: result_o = {1'b0, ~(a_i | b_i)};
// Conditional instructions
`ALU_OP_SEQ: result_o = (a_i == b_i) ? 33'b1 : 33'b0;
`ALU_OP_SNE: result_o = (a_i != b_i) ? 33'b1 : 33'b0;
`ALU_OP_SLT: if(signed_i) result_o = ({~a_i[31],a_i[30:0]} < {~b_i[31],b_i[30:0]}) ? 33'b1 : 33'b0;
else result_o = (a_i < b_i) ? 33'b1 : 33'b0;
`ALU_OP_SLE: if(signed_i) result_o = ({~a_i[31],a_i[30:0]} <= {~b_i[31],b_i[30:0]}) ? 33'b1 : 33'b0;
else result_o = (a_i <= b_i) ? 33'b1 : 33'b0;
`ALU_OP_SGT: if(signed_i) result_o = ({~a_i[31],a_i[30:0]} > {~b_i[31],b_i[30:0]}) ? 33'b1 : 33'b0;
else result_o = (a_i > b_i) ? 33'b1 : 33'b0;
`ALU_OP_SGE: if(signed_i) result_o = ({~a_i[31],a_i[30:0]} >= {~b_i[31],b_i[30:0]}) ? 33'b1 : 33'b0;
else result_o = (a_i >= b_i) ? 33'b1 : 33'b0;
Сообщение отредактировал Ynicky - Feb 23 2011, 19:06