名称:两个4位BCD数字求和Verilog代码vivado ego1开发板(文末获取)
软件:vivado
语言:Verilog
代码功能:
两个4位BCD数字求和
两个4位BCD数字相加,并在Artix-7演示板上的7段LED显示屏上显示结果。
设计应使用sw(3:0)作为一个输入BCD值,其中sw(3)是最高有效位,而将sw(7:4)作为另一个BCD值,其中sw(7)是最高有效位。
设计BCD加法器,使sw(8)为进位输入。
在演示板上的两个四位数7段LED显示屏的最右位数上显示BCD总和。其他七个数字应关闭。使用十进制点数(DP)显示BCD加法的进位,当两个4位BCD输入和进位之和导致从BCD加法进位时,打开小数点。
演示板手册记录了如何使用可用的段来实现数字1-9。所有未使用的4位代码应导致空白显示(所有LED段均熄灭)。
本代码已在ego1开发板验证,ego1开发板如下,其他开发板可以修改管脚适配:
1. 工程文件
2. 程序文件
3. 程序编译
4. Testbench
5. 仿真图
部分代码展示:
LIBRARY ieee; USE ieee.std_logic_1164.all; USE ieee.std_logic_unsigned.all; ENTITY BCD_adder IS PORT ( sw : IN STD_LOGIC_VECTOR(8 DOWNTO 0);--输入SW segment : OUT STD_LOGIC_VECTOR(6 DOWNTO 0);--高到低位分别表示数码管的gfedcba dp : OUT STD_LOGIC;--数码管小数点 an : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)--数码管位选,低电平亮 ); END BCD_adder; ARCHITECTURE behave OF BCD_adder IS SIGNAL A : STD_LOGIC_VECTOR(4 DOWNTO 0); SIGNAL B : STD_LOGIC_VECTOR(4 DOWNTO 0); SIGNAL cin : STD_LOGIC_VECTOR(4 DOWNTO 0); SIGNAL sum : STD_LOGIC_VECTOR(4 DOWNTO 0); SIGNAL bcd_sum : STD_LOGIC_VECTOR(4 DOWNTO 0); BEGIN an <= "11111110";--数码管位选,低电平亮 A <='0' & sw(3 DOWNTO 0);--加数A B <='0' & sw(7 DOWNTO 4);--加数B cin <="0000" & sw(8);--输入进位 sum <= A + B + cin;--计算和 PROCESS (sum) BEGIN if(sum>="01010")then--判断是否大于10 dp <= '1';--输出进位 bcd_sum <= sum-"01010";--输出BCD和 else dp <= '0';--不输出进位 bcd_sum <= sum;--输出BCD和 end if; END PROCESS; --segment是数码管段选--高到低位分别表示数码管的gfedcba PROCESS (bcd_sum) BEGIN CASE bcd_sum(3 DOWNTO 0) IS--和 WHEN "0000" => segment <= "0111111";--0对应的数码管gfedcba码值 WHEN "0001" => segment <= "0000110";--1对应的数码管gfedcba码值 WHEN "0010" => segment <= "1011011";--2对应的数码管gfedcba码值 WHEN "0011" => segment <= "1001111";--3对应的数码管gfedcba码值 WHEN "0100" => segment <= "1100110";--4对应的数码管gfedcba码值 WHEN "0101" => segment <= "1101101";--5对应的数码管gfedcba码值 WHEN "0110" => segment <= "1111101";--6对应的数码管gfedcba码值 WHEN "0111" => segment <= "0000111";--7对应的数码管gfedcba码值 WHEN "1000" => segment <= "1111111";--8对应的数码管gfedcba码值 WHEN "1001" => segment <= "1101111";--9对应的数码管gfedcba码值 WHEN OTHERS => END CASE; END PROCESS; END behave;
源代码
扫描文章末尾的公众号二维码