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

📄 outsel.vhd

📁 这是用CPLD开发的读取绝对式编码器反馈的信号的代码
💻 VHD
字号:
library IEEE;
use IEEE.std_logic_1164.all;

entity OUTSEL is
	port(
		ID		:in std_logic_vector(7 downto 0);
		CD		:in std_logic_vector(7 downto 0);
		SF		:in std_logic_vector(7 downto 0);

		D0F		:in std_logic_vector(7 downto 0);
		D1F		:in std_logic_vector(7 downto 0);
		D2F		:in std_logic_vector(7 downto 0);
		D3F		:in std_logic_vector(7 downto 0);
		D4F		:in std_logic_vector(7 downto 0);
		D5F		:in std_logic_vector(7 downto 0);
		D6F		:in std_logic_vector(7 downto 0);
		D7F		:in std_logic_vector(7 downto 0);
		ALM		:in std_logic_vector(7 downto 0);

		ADDR	:in std_logic_vector(2 downto 0);
		DMODE	:in std_logic;
		MANUAL	:in std_logic;
		DS40	:in std_logic;

		OUTPORT	:out std_logic_vector(39 downto 0)
	);

end OUTSEL;

architecture MAIN of OUTSEL is

signal FRAMELENGTH	:std_logic_vector(3 downto 0);

begin
	process(ID(3 downto 0))
	variable RQID	:std_logic_vector(3 downto 0);
	begin

		RQID:=ID(3 downto 0);
		case RQID is
		when x"2"=>
			FRAMELENGTH<=x"0";
		when x"6"|x"D"=>
			FRAMELENGTH<=x"1";
		when x"0"|x"1"|x"7"|x"8"|x"C"=>
			FRAMELENGTH<=x"2";
		when x"4"|x"9"|x"B"|x"E"|x"F"=>
			FRAMELENGTH<=x"3";
		when x"5"|x"A"=>
			FRAMELENGTH<=x"5";
		when x"3" =>
			FRAMELENGTH<=x"7";
		when others=>
			FRAMELENGTH<=x"0";
		end case;
	end process;

	OUTPORT(7 downto 0)<=
		D5F when (MANUAL='0' and DS40='1' and (FRAMELENGTH=x"5" or FRAMELENGTH=x"7"))else
		D0F	when (MANUAL='0' and DS40='0' and FRAMELENGTH>=x"1") else
		D7F	when (MANUAL='1' and DMODE='1' and ADDR="101" and FRAMELENGTH=x"7") else
		D5F	when (MANUAL='1' and DMODE='1' and ADDR="100" and FRAMELENGTH>=x"5") else
		SF	when (MANUAL='1' and DMODE='1' and ADDR="011" and FRAMELENGTH=x"2") else
		D3F	when (MANUAL='1' and DMODE='1' and ADDR="011" and FRAMELENGTH/=x"0") else
		D0F	when (MANUAL='1' and DMODE='1' and ADDR="010" and FRAMELENGTH=x"1") else
		SF	when (MANUAL='1' and DMODE='1' and ADDR="010" and FRAMELENGTH=x"0") else
		D1F	when (MANUAL='1' and DMODE='1' and ADDR="010" and FRAMELENGTH>=x"2") else
		CD	when (MANUAL='1' and ADDR="001") else
		ID	when (MANUAL='1' and ADDR="000") else
		D7F	when (MANUAL='1' and DMODE='0' and ADDR="011" and FRAMELENGTH=x"7") else
		SF	when (MANUAL='1' and DMODE='0' and ADDR="010" and FRAMELENGTH=x"2") else
		D3F	when (MANUAL='1' and DMODE='0' and ADDR="010" and FRAMELENGTH/=x"0") else
		x"00";

	OUTPORT(15 downto 8)<=
		D6F	when (MANUAL='0' and DS40='1' and FRAMELENGTH=x"7") else
		D1F	when (MANUAL='0' and DS40='0' and FRAMELENGTH>=x"2") else
		ALM	when (MANUAL='1' and DMODE='1' and ADDR="110") else
		SF	when (MANUAL='1' and DMODE='1' and ADDR="101" and FRAMELENGTH=x"7") else
		SF	when (MANUAL='1' and DMODE='1' and ADDR="100" and FRAMELENGTH=x"5") else
		D6F	when (MANUAL='1' and DMODE='1' and ADDR="100" and FRAMELENGTH=x"7") else
		SF	when (MANUAL='1' and DMODE='1' and ADDR="011" and FRAMELENGTH=x"3") else
		D4F	when (MANUAL='1' and DMODE='1' and ADDR="011" and FRAMELENGTH>=x"4") else
		D2F	when (MANUAL='1' and DMODE='1' and ADDR="010" and FRAMELENGTH>=x"2") else
		SF	when (MANUAL='1' and DMODE='1' and ADDR="001" and FRAMELENGTH=x"1") else
		D0F	when (MANUAL='1' and DMODE='1' and ADDR="001" and FRAMELENGTH/=x"1") else
		SF	when (MANUAL='1' and DMODE='0' and ADDR="011" and FRAMELENGTH=x"7") else
		D4F	when (MANUAL='1' and DMODE='0' and ADDR="010" and FRAMELENGTH>=x"4") else
		SF	when (MANUAL='1' and DMODE='0' and ADDR="010" and FRAMELENGTH=x"3") else
		SF	when (MANUAL='1' and DMODE='0' and ADDR="001" and FRAMELENGTH=x"1") else
		D0F	when (MANUAL='1' and DMODE='0' and ADDR="001" and FRAMELENGTH/=x"1") else
		x"00";

	OUTPORT(23 downto 16)<=
		D7F	when (MANUAL='0' and DS40='1' and FRAMELENGTH=x"7") else
		D2F when (MANUAL='0' and DS40='0' and FRAMELENGTH>=x"1")else
		D5F	when (MANUAL='1' and DMODE='0' and ADDR="010" and FRAMELENGTH>=x"4") else
		SF	when (MANUAL='1' and DMODE='0' and ADDR="001" and ID(3 downto 0)=x"2") else
		D0F	when (MANUAL='1' and DMODE='0' and ADDR="001" and FRAMELENGTH=x"1") else
		D1F when (MANUAL='1' and DMODE='0' and ADDR="001" and FRAMELENGTH/=x"1") else
		x"00";

	OUTPORT(31 downto 24)<=
		D3F	when (MANUAL='0' and DS40='0' and FRAMELENGTH>=x"3") else
		ALM	when (MANUAL='1' and DMODE='0' and ADDR="011") else
		SF	when (MANUAL='1' and DMODE='0' and ADDR="010" and FRAMELENGTH=x"5") else
		D6F when (MANUAL='1' and DMODE='0' and ADDR="010" and FRAMELENGTH=x"7") else
		D2F	when (MANUAL='1' and DMODE='0' and ADDR="001" and FRAMELENGTH>=x"2") else
		x"00";

	OUTPORT(39 downto 32)<=
		ALM	when (MANUAL='0' and DS40='1') else
		D4F when (MANUAL='0' and DS40='0' and FRAMELENGTH>=x"4") else
		x"00";
end MAIN;

⌨️ 快捷键说明

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