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

📄 receiver.vhd

📁 串行输入信号经内部处理后
💻 VHD
字号:
LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE ieee.std_logic_unsigned.all;

ENTITY receiver IS
	PORT (clk  : IN  std_logic;
		sdata  : IN  std_logic;				----串行输入信号
		readn  : OUT std_logic;				----控制PC机读取数据的信号
		pdata  : OUT std_logic_vector(7 downto 0)		----并行信号输出
);
END receiver;

ARCHITECTURE des OF receiver IS
signal mmid           :std_logic;
signal midstate       :std_logic;
signal midpdata       :std_logic_vector(7 downto 0);
signal midcnt         :std_logic_vector(3 downto 0);
signal middcnt        :std_logic_vector(3 downto 0);
signal midscnt        :std_logic_vector(3 downto 0);
signal midsdata       :std_logic;
begin
A: process(clk)      ------2分频
Begin             
if(clk='1' and clk'event) then
   mmid<=not mmid;
 else
   mmid<=mmid;
end if;
end process A;

B: process(mmid,sdata)    -------串并处理部分
begin
if sdata='1' and midstate='1' then
  midstate<='0';
  midcnt<="0000";
  readn<='1';
  midpdata<="00000000";
  midscnt<="0000";
else  
  if(mmid='1' and mmid'event) then
     if midstate='0' then
         if midcnt<"1011" then
           if middcnt<="1000" then
             middcnt<=middcnt+'1';
             midscnt<=midscnt+sdata;
           else
             middcnt<="0000";
             midcnt<=midcnt+'1';
             if midcnt="1010" then
                pdata<=midpdata;
             end if;
             if midscnt<"0111" then
               midsdata<='0';
             else
               midsdata<='1';
             end if; 
           if midcnt<="1001" then
               midscnt<="0000";
               midpdata<=midpdata(6 downto 0) & midsdata;
           end if;
           end if;
        else
           midcnt<="1111";
           midstate<='1';
           readn<='0';
        end if;
     end if;
  end if;
end if;
end process B;
END des;


⌨️ 快捷键说明

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