名称:基于FPGA的3bit的ALU设计VHDL代码Quartus仿真
软件:Quartus
语言:VHDL
代码功能:
制作一个3bit的ALU,不带符号,实现八种功能。要求:
1.控制码中,000=ADD,001=SUB,O10=AND,011=OR,100=XOR,101=NOT,110= Rshift,111=Lshift。
2.用解码器识别以上的控制码,完成控制选择。
3.用X0,X1,X2和Y0,Y1,Y2指代 Input.用Z0,z1,z2指代 Output. C0指代 Carry位,BO指代 Borrow位。
4.不带符号。
5.对于NOT, Rshift, Lshift操作,使用X0,X1,X2。
6.程序将导入学院查重系统识别,抄袭者将移送教务处处理。
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
演示视频:
设计文档:
1. 工程文件
2. 程序文件
3. 程序编译
4. RTL图
5. Testbench
6. 仿真图
仿真图中,OP为控制码,有000~111一共8种;x0,x1,x2中x2为高位,x0为低位;Y、Z同理。
部分代码展示:
LIBRARY?ieee;
???USE?ieee.std_logic_1164.all;
???USE?ieee.std_logic_unsigned.all;
ENTITY?ALU?IS
???PORT?(
??????OP??:?IN?STD_LOGIC_VECTOR(2?DOWNTO?0);
??????X0??:?IN?STD_LOGIC;
??????X1??:?IN?STD_LOGIC;
??????X2??:?IN?STD_LOGIC;
??????Y0??:?IN?STD_LOGIC;
??????Y1??:?IN?STD_LOGIC;
??????Y2??:?IN?STD_LOGIC;
??????
??????Z0??:?OUT?STD_LOGIC;
??????Z1??:?OUT?STD_LOGIC;
??????Z2??:?OUT?STD_LOGIC;
??????
??????C0??:?OUT?STD_LOGIC;
??????B0??:?OUT?STD_LOGIC
???);
END?ALU;
ARCHITECTURE?behave?OF?ALU?IS
???SIGNAL?Zdata?:?STD_LOGIC_VECTOR(3?DOWNTO?0);
???SIGNAL?Xdata?:?STD_LOGIC_VECTOR(3?DOWNTO?0);
???SIGNAL?Ydata?:?STD_LOGIC_VECTOR(3?DOWNTO?0);
BEGIN
???Xdata?<=?('0'?&?X2?&?X1?&?X0);
???Ydata?<=?('0'?&?Y2?&?Y1?&?Y0);
???
???PROCESS?(OP,?Xdata,?Ydata)
???BEGIN
??????CASE?OP?IS
?????????WHEN?"000"?=>
????????????Zdata?<=?Xdata?+?Ydata;
?????????WHEN?"001"?=>
????????????Zdata?<=?Xdata?-?Ydata;
?????????WHEN?"010"?=>
????????????Zdata?<=?Xdata?AND?Ydata;
?????????WHEN?"011"?=>
????????????Zdata?<=?Xdata?OR?Ydata;
?????????WHEN?"100"?=>
????????????Zdata?<=?Xdata?XOR?Ydata;
?????????WHEN?"101"?=>
????????????Zdata?<=?NOT(Xdata);
?????????WHEN?"110"?=>
????????????Zdata?<=?('0'?&?'0'?&?Xdata(2?DOWNTO?1));
?????????WHEN?"111"?=>
????????????Zdata?<=?('0'?&?Xdata(1?DOWNTO?0)?&?'0');
?????????WHEN?OTHERS?=>
??????END?CASE;
???END?PROCESS;
???
???
???Z0?<=?Zdata(0);
???Z1?<=?Zdata(1);
???Z2?<=?Zdata(2);
???
???C0?<=?'1'?WHEN?((OP?=?"000")?AND?(Zdata(3)?=?'1'))?ELSE
?????????'0';
???B0?<=?'1'?WHEN?((OP?=?"001")?AND?(Xdata?<?Ydata))?ELSE
?????????'0';
???
END?behave;
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=766
214