K顾芯科技 6.2CPU基本部件设计 6.2.1运算器ALU alu a[15.0] c[15.0] b[15.0] sel[3.0] inst 图6-8运算器ALU结构图
KX 康芯科技 6.2.1 运算器ALU 图6-8 运算器ALU结构图 6.2 CPU基本部件设计 a[15.0] b[15.0] sel[3.0] c[15.0] alu inst
~·审故烈姑 【例6-3】 library IEEE; use IEEE.std_logic_1164.all; use IEEE.std logic unsigned.all; use work.cpu lib.all; entity alu is port(a,b:in bit16;sel in t_alu;c:out bit16); end alu; architecture rtl of alu is begin aluproc:process(a,b,sel) begin case sel is when alupass=>c<=a after 1 ns;when andOp =>c<=a and b after 1 ns; when orOp=>c<=a or b after 1 ns;when xorOp=>c<=a xor b after 1 ns; when notOp=>c<=not a after 1 ns;when plus =>c<=a b after 1 ns; when alusub =>c<=a-b after 1 ns; when inc=>c<=a+"0000000000000001"after1ns; when dec=>c<=a-"0000000000000001"after1ns; when zero=>c<="0000000000000000"after1ns; when others=>c<="0000000000000000"after 1 ns; end case;end process; end rtl;
KX 康芯科技 6.2.1 运算器ALU 图6-5 运算器ALU结构图 6.2 CPU基本部件设计 【例6-3】 library IEEE; use IEEE.std_logic_1164.all; use IEEE.std_logic_unsigned.all; use work.cpu_lib.all; entity alu is port( a, b : in bit16; sel : in t_alu; c : out bit16 ); end alu; architecture rtl of alu is begin aluproc: process(a, b, sel) begin case sel is when alupass=> c<=a after 1 ns; when andOp => c<=a and b after 1 ns; when orOp => c<= a or b after 1 ns; when xorOp => c<= a xor b after 1 ns; when notOp => c<= not a after 1 ns; when plus => c<= a + b after 1 ns; when alusub => c<= a - b after 1 ns; when inc => c<= a + "0000000000000001" after 1 ns; when dec => c<= a - "0000000000000001" after 1 ns; when zero => c<= "0000000000000000" after 1 ns; when others => c<= "0000000000000000" after 1 ns; end case;end process; end rtl;
K康芯科技 6.2CPU基本部件设计 6.2.1运算器ALU Nane Value at ps 1.28us 2.56us 3.84us 5.12us 6.4us 7.68us 10.3ns 10.3ns 司 国sel B0000 00000001X00100011X0100010T0110X0111X1000X1001X10101011X1100X1101X11101111X0000 同 国 H4567 145671H 田b H23AC 123AC 35AC 47AC 司 c H4567 4567012467F8A98860B9130阳B4584566000K■■■■ 0000 4567 (1)(2)(3)(4(5)(6)(7)(8)(9)0 ) 图6-9运算器ALU的仿真波形
KX 康芯科技 6.2.1 运算器ALU 图6-9 运算器ALU的仿真波形 6.2 CPU基本部件设计 ⑴ ⑵ ⑶ ⑷ ⑸ ⑹ ⑺ ⑻ ⑼ ⑽ ⑾
K能芯科技 6.2CPU基本部件设计 6.2.1运算器ALU 表6-6ALU运算仿真结果说明 工作点波 功能选 运算类型 输入数据 运算结果 兽 sel a (1) 0000 通过PASS 4567 C=A,C=4567 (2) 0001 与 4567 23AC C=A AND B=4567A23AC =0124 (3) 0010 或 4567 23AC C=A OR B=4567V23AC 67EF (4) 0011 非 4567 C=NOT A=BA98 (5) 0100 异或 45467 23AC C=A XOR B=A由B=4567⊕23AC=66CB (6) 0101 加法 4567 23AC C=A+B=4567+23AC=6913 (7) 0110 减法 4567 35AC C=A-B=4567-35AC=0FBB (8) 0111 加1 4567 C=A+1=4567+1=4568 (9) 1000 减1 4567 C=A-1=4567-1=4566 (10) 1001 清0 xx C=0000 (11) 1010-1111 其它 xxx C-0000
KX 康芯科技 6.2.1 运算器ALU 表6-6 ALU运算仿真结果说明 6.2 CPU基本部件设计 工作点波 功能选 择 sel 运算类型 输入数据 运算结果 c a b (1) 0000 通过PASS 4567 C=A , C=4567 (2) 0001 与 4567 23AC C=A AND B= 4567∧23AC = 0 124 (3) 0010 或 4567 23AC C=A OR B = 4567∨23AC = 6 7EF (4) 0011 非 4567 C=NOT A = BA98 (5) 0100 异或 45467 23AC C=A XOR B = A⊕B = 4567⊕23AC = 66CB (6) 0101 加法 4567 23AC C=A + B= 4567+23AC= 6913 (7) 0110 减法 4567 35AC C=A – B = 4567-35AC =0FBB (8) 0111 加1 4567 C=A + 1 = 4567+1= 4568 (9) 1000 减1 4567 C=A – 1 = 4567-1 =4566 (10) 1001 清0 xxxx xxxx C=0000 (11) 1010~1111 其它 xxxx xxxx C=0000
K睫还芯科技 6.2CPU基本部件设计 6.2.2比较器COMP 表6-7比较器的运算类型 t comp 比较类型 操作说明 000 eq(等于) 若a=b,compout=-1 001 neq(不等于) 若a<>b,compout=-1 010 gt(大于) 若a>b,compout=-1 011 gte(大于等于) 若a>=b,compout=1 100 t(小于) 若a<b,compout=-1 101 lte(小于等于) 若a<-b,compout=-1 其他 compout=0
KX 康芯科技 6.2.2 比较器COMP 表6-7比较器的运算类型 6.2 CPU基本部件设计 t_comp 比较类型 操作说明 000 eq (等于) 若a=b,compout=1 001 neq (不等于) 若a<>b,compout=1 010 gt (大于) 若a>b,compout=1 011 gte (大于等于) 若a>=b,compout=1 100 lt (小于) 若a<b,compout=1 101 lte (小于等于) 若a<=b,compout=1 其他 compout=0