⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 seg7_dsp.vhd

📁 《VHDL与数字电路设计》配套光盘,可以实际调用
💻 VHD
字号:
-- ********************************************
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;

--*********************************************
ENTITY Seg7_Dsp is
	PORT(
		 CP			: IN    STD_LOGIC;						-- CLOCK
		 SEGOUT		: OUT   STD_LOGIC_VECTOR(7 DOWNTO 0);	-- SEG7 Display O/P
	     SELOUT		: OUT   STD_LOGIC_VECTOR(5 DOWNTO 0);	-- Select SEG7 O/P	
		 NUMOUT		: OUT   STD_LOGIC_VECTOR(3 DOWNTO 0)	-- Number Display Signal	
		);
END Seg7_Dsp;

--*********************************************
ARCHITECTURE a OF Seg7_Dsp IS
	SIGNAL 	NUM 	: STD_LOGIC_VECTOR( 3 DOWNTO 0);	-- Number Display Signal	
	SIGNAL  SEG		: STD_LOGIC_VECTOR( 6 DOWNTO 0);	-- SEG7 Display Signal
	SIGNAL  SEL		: STD_LOGIC_VECTOR( 5 DOWNTO 0);	-- Select SEG7 Signal
BEGIN

Connection : Block
Begin
	SELOUT <= SEL;					-- Seg7 Disp Selection 
	SEGOUT(6 DOWNTO 0) <= SEG;		-- Seven Segment Display	
	SEGOUT(7) <= '1';
	NUMOUT <= NUM;
End Block Connection;

Free_Counter : Block		-- 计数器      --  产生扫描信号             	
 	Signal 	Q	: STD_LOGIC_VECTOR(24 DOWNTO 0);
	Signal	S 	: STD_LOGIC_VECTOR(2 DOWNTO 0);
Begin
	
	PROCESS (CP)				-- 计数器计数       
	Begin
		IF CP'Event AND CP='1' then
			Q <= Q+1;			
		END IF;
	END PROCESS;
	
	NUM <= Q(24 DOWNTO 21);		--about 1 Hz
	S <= Q(15 DOWNTO 13);		--about 245 Hz

	--NUM <= Q(6 DOWNTO 3);
	--S <= Q(1 DOWNTO 0);
									--扫描信号     
	SEL <= 	"111110" WHEN S=0 ELSE
			"111101" WHEN S=1 ELSE
			"111011" WHEN S=2 ELSE
			"110111" WHEN S=3 ELSE
			"101111" WHEN S=4 ELSE
			"011111" WHEN S=5 ELSE
			"111111";

	
End Block Free_Counter;											


SEVEN_SEGMENT : Block	-- Binary Code -> Segment 7 Code
Begin
		   --gfedcba
	SEG <= 	"0111111" WHEN NUM = 0 ELSE
		 	"0000110" WHEN NUM = 1 ELSE
 			"1011011" WHEN NUM = 2 ELSE
			"1001111" WHEN NUM = 3 ELSE
			"1100110" WHEN NUM = 4 ELSE
			"1101101" WHEN NUM = 5 ELSE
			"1111101" WHEN NUM = 6 ELSE
		 	"0000111" WHEN NUM = 7 ELSE
 			"1111111" WHEN NUM = 8 ELSE
			"1101111" WHEN NUM = 9 ELSE
			"1110111" WHEN NUM = 10 ELSE
			"1111100" WHEN NUM = 11 ELSE
			"0111001" WHEN NUM = 12 ELSE
			"1011110" WHEN NUM = 13 ELSE
			"1111001" WHEN NUM = 14 ELSE
			"1110001" WHEN NUM = 15 ELSE
			"0000000";
End Block SEVEN_SEGMENT;											


END a;







⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -