【FPGA】VHDL:八段码到8421BCD码转换电路
- IT业界
- 2025-08-04 07:27:01

目录
EDA设计基础练习题 :
实验要求如下:
代码
八段码到8421BCD码转换电路
8421BCD码到八段码转换电路
八段码到8421BCD~运行结果展示
8421BCD转八段码~运行结果展示
特别注意
软件:Quartus II 13.0 (64-bit)
语言:VHDL
EDA设计基础练习题 :
4、八段码到8421BCD码转换电路(以共阳极数码管为例)。
5、8421BCD码到八段码转换电路(以共阴极数码管为例)。
实验要求如下:
1、程序设计:编写完整实验程序;注明端口名称及意义;
2、仿真验证:编辑程序、编译、仿真;提交全部程序、文件及工程建立结果界面、编译成功界面、功能仿真结果波形图;注意仿真图需能够看出来工作过程及实现的功能。
编码对象
8421BCD码
共阳极八段码
共阴极八段码
Q8、Q4、Q2、Q1
dpgfedcba
dpgfedcba
0
0000
11000000
00111111
1
0001
11111001
00000110
2
0010
10100100
01011011
3
0011
10110000
01001111
4
0100
10011001
01100110
5
0101
10010010
01101101
6
0110
10000010
01111101
7
0111
11111000
00000111
8
1000
10000000
01111111
9
1001
10010000
01101111
其他情况
1111
10111111
01000000
代码 八段码到8421BCD码转换电路
用CASE-WHEN语句编写码转换电路比较方便,对比C语言中switch-case语句
-- 编写程序4 八段码到8421BCD码转换电路(以共阳极数码管为例) -- 码转换 -case语句 library IEEE; USE IEEE.STD_logic_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_logic_unsigned.ALL; -- 实体声明 ENTITY ShiYan7 IS PORT( input_Yang : IN STD_logic_vector(7 downto 0); output_8421BCD :out STD_logic_vector(3 downto 0) ); END ShiYan7; --结构体说明 ARCHITECTURE behave OF ShiYan7 IS BEGIN PROCESS (input_Yang) BEGIN --八段码到8421BCD码转换电路(以共阳极数码管为例) CASE input_Yang IS WHEN "11000000" => output_8421BCD <= "0000"; WHEN "11111001" => output_8421BCD <= "0001"; WHEN "10100100" => output_8421BCD <= "0010"; WHEN "10110000" => output_8421BCD <= "0011"; WHEN "10011001" => output_8421BCD <= "0100"; WHEN "10010010" => output_8421BCD <= "0101"; WHEN "10000010" => output_8421BCD <= "0110"; WHEN "11111000" => output_8421BCD <= "0111"; WHEN "10000000" => output_8421BCD <= "1000"; WHEN "10010000" => output_8421BCD <= "1001"; when others => output_8421BCD <= "1111"; END CASE; END PROCESS; END behave; 8421BCD码到八段码转换电路 -- 编写程序 5、8421BCD码到八段码转换电路(以共阴极数码管为例)。 -- 码转换 -case语句 library IEEE; USE IEEE.STD_logic_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_logic_unsigned.ALL; -- 实体声明 ENTITY ShiYan7 IS PORT( Input_8421BCD : IN STD_logic_vector(3 downto 0); Output_Yin : OUT STD_logic_vector(7 downto 0) ); END ShiYan7; --结构体说明 ARCHITECTURE behave OF ShiYan7 IS BEGIN PROCESS (Input_8421BCD) BEGIN --5、8421BCD码到八段码转换电路(以共阴极数码管为例) CASE Input_8421BCD IS WHEN "0000" => Output_Yin <= "00111111"; WHEN "0001" => Output_Yin <= "00000110"; WHEN "0010" => Output_Yin <= "01011011"; WHEN "0011" => Output_Yin <= "01001111"; WHEN "0100" => Output_Yin <= "01100110"; WHEN "0101" => Output_Yin <= "01101101"; WHEN "0110" => Output_Yin <= "01111101"; WHEN "0111" => Output_Yin <= "00000111"; WHEN "1000" => Output_Yin <= "01111111"; WHEN "1001" => Output_Yin <= "01101111"; when others => Output_Yin <= "01000000"; END CASE; END PROCESS; END behave;编译通过
八段码到8421BCD~运行结果展示 8421BCD转八段码~运行结果展示这个运行结果可以自行实验
特别注意
工程名要和实体名相同
IF-ELSE语句写法 IF 条件句 THEN 顺序语句; END IF; 第一种if语句用于门闩控制,就只有一个条件句,是最简单的if语句 ---------- IF 条件句 THEN 顺序语句; ELSE 顺序语句; END IF; 第二种if语句多用于二选一电路,也很简单啦 ---------- IF 条件句 THEN 顺序语句; ELSLF 条件句 THEN 顺序语句; .....(这里可以有很多elsif语句) ELSE(最后一句是ELSE,要注意) 顺序语句; END IF; 第三种多用于多选择的控制,这里一定一定要注意是"**ELSIF**"而不是ELSEIF ---------- IF 条件句 THEN IF 条件句 THEN 顺序语句; END IF; END IF; 第四种是if语句嵌套使用,多用于多个情况组合判断,例如clk电路 ------------------------ IF 条件句 THEN 顺序语句; END IF; IF 条件句 THEN 顺序语句; END IF; 第五种是if语句并行执行
CASE-WHEN语句写法 CASE 多值表达式 IS WHEN 选择值 => 被赋值变量 <=赋值变量; WHEN 选择值 => 被赋值变量 <=赋值变量; WHEN 选择值 => 被赋值变量 <=赋值变量; ... WHEN OTHERS =>被赋值变量 <=赋值变量; END CASE
本代码纯自己手敲,拒绝白嫖!
参考文章:http://t.csdnimg.cn/h4KK1
【FPGA】VHDL:八段码到8421BCD码转换电路由讯客互联IT业界栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“【FPGA】VHDL:八段码到8421BCD码转换电路”