设计一个多功能的1位加法器,有控制信号M、S2、S1、S0。当M=1,做算术运算:在S2、S1、S0的控制下能完成两个1位二进制数A、B的以下算术运算:A加B,A加1,A加B加低位来的进位,B加1,A加,A加0,A加A,A加加1。当M=0,做逻辑运算:在S2、S1、S0的控制下能完成两个1位二进制数A、B的以下逻辑运算:A+B,A·B,,,,,,等。用VHDL编程并仿真(时序)。libraryieee;useieee.std_logic_1164.all;entityadderisport(m,s2,s1,s0,a,b,ci:instd_logic;f,co:outstd_logic);endadder;architecturebehaveofadderissignalf_i:std_logic_vector(3downto0);beginf_i=m&s2&s1&s0;process(f_i)begincasef_iiswhen1000=f=axorb;co=aandb;when1001=f=axor'1';co=a;when1010=f=(axorb)xorci;co=(aandb)or(ciand(axorb));when1011=f=bxor'1';co=b;when1100=f=axor(notb);co=aand(notb);when1101=f=axor'0';co='0';when1110=f=axora;co=a;when1111=f=axor(notb)xor'1';co=(aandb)or(axorb);when0000=f=aorb;when0001=f=aandb;when0010=f=nota;when0011=f=notb;when0100=f=axorb;when0101=f=aor(notb);when0110=f=not(axorb);when0111=f=aand(notb);whenothers=f='0';co='0';endcase;endprocess;endbehave;