?? choice1from6.vhd
字號:
--/*****************************************************************************
-- * 源文件: choice1from6.vhd
-- * 模塊: 6選1選擇器
-- * 版權(quán):
-- * Copyright(C) 北京聯(lián)華眾科科技有限公司
-- * www.lianhua-zhongke.com.cn
-- * 版本: Version 1.0
-- *
-- * 功能說明:
-- * 以輸入時鐘為基準(zhǔn),循環(huán)從6路輸入中選擇一路輸出,同時輸出選擇索
-- * 引數(shù)據(jù), 如當(dāng)選擇輸出data_in0時同時輸出的索引數(shù)據(jù)為"111110"。
-- * 參數(shù)說明:
-- * 輸出
-- * led_bits - 從6路輸入中選擇輸出的1路
-- * led_cs - 選擇索引,如當(dāng)選擇輸出data_in0時同時輸出的索引數(shù)據(jù)為
-- * "111110",其數(shù)據(jù)位數(shù)由參數(shù)digital_num設(shè)定
-- * dp - 當(dāng)前是否顯示小數(shù)點,1表示顯示,0表示不顯示
-- *
-- * 輸入
-- * data_in0 - 第0路輸入數(shù)據(jù),數(shù)據(jù)寬度由參數(shù)bitwidth指定
-- * data_in1 - 第1路輸入數(shù)據(jù),數(shù)據(jù)寬度由參數(shù)bitwidth指定
-- * data_in2 - 第2路輸入數(shù)據(jù),數(shù)據(jù)寬度由參數(shù)bitwidth指定
-- * data_in3 - 第3路輸入數(shù)據(jù),數(shù)據(jù)寬度由參數(shù)bitwidth指定
-- * data_in4 - 第4路輸入數(shù)據(jù),數(shù)據(jù)寬度由參數(shù)bitwidth指定
-- * data_in5 - 第5路輸入數(shù)據(jù),數(shù)據(jù)寬度由參數(shù)bitwidth指定
-- * clk - 時鐘
-- * reset - 復(fù)位信號,低電平有效
-- *
-- * 參數(shù)
-- * bitwidth - 數(shù)據(jù)位數(shù)
-- * digital_num - 選擇器輸入數(shù)據(jù)路數(shù)
-- *
-- * 變更記錄:
-- * 2006.01.28, 新建
-- *
-- *****************************************************************************/
LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE ieee.std_logic_arith.all;
USE ieee.std_logic_unsigned.all;
ENTITY choice1from6 IS
GENERIC
(
bitwidth : INTEGER RANGE 0 TO 15:= 4;
digital_num : INTEGER RANGE 0 TO 7 := 6
);
PORT
(
led_bits : OUT STD_LOGIC_VECTOR(bitwidth-1 DOWNTO 0);
led_cs : BUFFER STD_LOGIC_VECTOR(digital_num-1 DOWNTO 0);
dp : OUT STD_LOGIC;
data_in0 : IN STD_LOGIC_VECTOR(bitwidth-1 DOWNTO 0);
data_in1 : IN STD_LOGIC_VECTOR(bitwidth-1 DOWNTO 0);
data_in2 : IN STD_LOGIC_VECTOR(bitwidth-1 DOWNTO 0);
data_in3 : IN STD_LOGIC_VECTOR(bitwidth-1 DOWNTO 0);
data_in4 : IN STD_LOGIC_VECTOR(bitwidth-1 DOWNTO 0);
data_in5 : IN STD_LOGIC_VECTOR(bitwidth-1 DOWNTO 0);
clk : IN STD_LOGIC;
reset : IN STD_LOGIC
);
END choice1from6;
ARCHITECTURE choice1from6_architecture OF choice1from6 IS
BEGIN
PROCESS(clk, reset)
VARIABLE next_led_cs : STD_LOGIC_VECTOR(digital_num-1 DOWNTO 0);
BEGIN
IF (reset = '0') THEN
led_bits <= "0000";
led_cs <= "111111";
next_led_cs := "111110";
dp <= '1';
ELSE
IF(clk = '1' AND clk'EVENT) THEN
led_cs <= next_led_cs;
IF (next_led_cs(4)='0' or next_led_cs(2)='0') THEN
dp <= '0';
ELSE
dp <= '1';
END IF;
CASE next_led_cs IS
WHEN "111110" => led_bits <= data_in0;
next_led_cs := "111101";
WHEN "111101" => led_bits <= data_in1;
next_led_cs := "111011";
WHEN "111011" => led_bits <= data_in2;
next_led_cs := "110111";
WHEN "110111" => led_bits <= data_in3;
next_led_cs := "101111";
WHEN "101111" => led_bits <= data_in4;
next_led_cs := "011111";
WHEN "011111" => led_bits <= data_in5;
next_led_cs := "111110";
WHEN OTHERS => led_bits <= "0000";
next_led_cs := "111110";
END CASE;
END IF;
END IF;
END PROCESS;
END choice1from6_architecture;
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -