📄 bin2bcd.vhd
字号:
--下面用一个二进制码到BCD码的转换例子来说明Case-when语句的用法,程序如下:
------------------------------------------------------------------------------
-- DESCRIPTION : Bin to Bcd converter
-- Input (data_in) width : 4
-- Output (data_out) width : 8
-- Enable (EN) active : high
--
-------------------------------------------------------------------------------
library ieee;
use IEEE.std_logic_1164.all;
entity bin2bcd is
port(
data_in : in std_logic_vector(3 downto 0);
EN : in std_logic;
data_out : out std_logic_vector(7 downto 0)
);
end bin2bcd;
architecture bin2bcd of bin2bcd is
begin
process(data_in, EN)
variable data_in_TEMP : std_logic_vector(2 downto 0);
begin
data_in_TEMP := data_in(3 downto 1);
data_out <= (others => '0');
if EN='1' then
case data_in_TEMP is
when "000" => data_out(7 downto 1) <= "0000000";
when "001" => data_out(7 downto 1) <= "0000001";
when "010" => data_out(7 downto 1) <= "0000010";
when "011" => data_out(7 downto 1) <= "0000011";
when "100" => data_out(7 downto 1) <= "0000100";
when "101" => data_out(7 downto 1) <= "0001000";
when "110" => data_out(7 downto 1) <= "0001001";
when "111" => data_out(7 downto 1) <= "0001010";
when others => data_out <= (others => '0');
end case;
data_out(0) <= data_in(0);
end if;
end process;
end bin2bcd;
--程序中的BCD码用四位表示个位,用四位表示十位。通过分析可以发现,
--二进制码和BCD码的个位是相同的,因此转换程序只需要转换输入数据的
--高三位就可以了。程序采用case-when语句根据输入数据的高三位选择不
--同的数据作为输出,通过在ModelSim软件中的单步调试可以发现程序的
--执行是顺序进行的。单步调试的示意图如图4-9所示,其对应的仿真波形
--如图4-10所示。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -