基于FPGA四位加法器设计.docx
文本预览下载声明
基于FPGA的四位加法器设计4位加法器设计。取开发板上的4位按键作为4位被加数,取4位拨码开关作为4位被加数,其中8个led灯取5位作为输出结果,led0-led3作为相加的结果,led4作为进位(LED亮表示低电平0,LED灭表示高电平1,)数码管以十进制数显示被加数,加数和相加的结果。包括vhdl文件、和vwf文件。利用两组按键作为两个加数输入,用数码管做加数显示和结果显示,开发板上只有4个数码管,但加数都是两位的,所以只能做轮流显示,用“=”键做显示切换。程序如下:library ieee;use ieee.std_logic_unsigned.all;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;entity adder_4 isport( clk:in std_logic; --时钟输入,应该输入分频后的clk enter:in std_logic; --显示切换,可以理解位“=”键 clear:in std_logic; --清除键,预留接口可扩展 key_num1:in std_logic_vector(3 downto 0); --加数1 key_num2:in std_logic_vector(3 downto 0); --加数2 duan:out std_logic_vector(6 downto 0); --输出结果 wei:out std_logic_vector(3 downto 0); led5:out std_logic_vector(4 downto 0) --led结果显示 );end entity;architecture fun of adder_4 issignal num1,num2:std_logic_vector(3 downto 0); --中间信号定义signal add_num1: integer range 15 downto 0;signal add_num2: integer range 15 downto 0;signal add_sum: integer range 30 downto 0;signal ten_data:integer range 9 downto 0;signal add_num1ge,add_num1shi,add_num2ge,add_num2shi,sumge,sumshi:integer range 9 downto 0;signal wei_data:integer range 0 to 3;begin duan=1000000when ten_data=0 else --显示部分,数码管共阳 1111001when ten_data=1 else 0100100when ten_data=2 else 0110000when ten_data=3 else 0111001when ten_data=4 else 0010010when ten_data=5 else 0000010when ten_data=6 else 1111000when ten_data=7 else 0000000when ten_data=8 else 0010000; process(clk,clear,enter,key_num1,key_num2,num1,num2,add_num1ge,add_num1shi,add_num2ge,add_num2shi,sumge,sumshi) begin if clear = 0 then add_num1=0; add_num2=0; add_sum=0; else --if key_num1/=1111 or key_num2/=1111 then num1=not key_num1; num2=not key_num2;--加数处理,二进制转十进制。 add_num1=conv_integer(num1(0))*1 + conv_integer(num1(1))*2 + conv_integer(num1(2))*4 + conv_integer(num1(3))*8;add_num1ge=(add_num1 rem 10); --个位,十位分离 add_num1shi=((add_num1 - add_num1ge)/10); add_num2=conv_integer(num2(0))*1 + conv_integer(num
显示全部