本文主要是介绍【FPGA】VHDL:八段码到8421BCD码转换电路,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
目录
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 ISBEGINPROCESS (input_Yang)BEGIN--八段码到8421BCD码转换电路(以共阳极数码管为例)CASE input_Yang ISWHEN "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 ISBEGINPROCESS (Input_8421BCD)BEGIN--5、8421BCD码到八段码转换电路(以共阴极数码管为例)CASE Input_8421BCD ISWHEN "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 条件句 THENIF 条件句 THEN顺序语句;END IF;
END IF;
第四种是if语句嵌套使用,多用于多个情况组合判断,例如clk电路
------------------------IF 条件句 THEN顺序语句;
END IF;
IF 条件句 THEN顺序语句;
END IF;
第五种是if语句并行执行
CASE-WHEN语句写法
CASE 多值表达式 ISWHEN 选择值 => 被赋值变量 <=赋值变量;WHEN 选择值 => 被赋值变量 <=赋值变量;WHEN 选择值 => 被赋值变量 <=赋值变量;...WHEN OTHERS =>被赋值变量 <=赋值变量;
END CASE
本代码纯自己手敲,拒绝白嫖!
参考文章:http://t.csdnimg.cn/h4KK1
这篇关于【FPGA】VHDL:八段码到8421BCD码转换电路的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!