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

📄 rs232_rec2.vhd.bak

📁 VHDL语言实现的穿行通讯
💻 BAK
📖 第 1 页 / 共 2 页
字号:
                     recstart <= '0';    
                     rec_write<='1';
----------------------------------------
                     rec_data<=rxd_buf;  
                     data<=rxd_buf;
----------------------------------------
                  end if;   


--                 end if; 
--                 END IF;
  
               END IF;
            END IF;
         END IF;
      END IF;
	END IF;
   END PROCESS;

--   PROCESS(div8_tras_reg)
--   BEGIN
--      IF (div8_tras_reg = "111") THEN
--         clkbaud_tras <= '1';  --在第7个时隙,发送使能信号有效,将数据发出  
--         test_baud8x_p<='1';
--      ELSE
--         clkbaud_tras <= '0';
--         test_baud8x_p<='0';    
--      END IF;
--   END PROCESS;




   PROCESS(clkbaud8x,rst)
   
   --variable txd_buf:std_logic_vector(7 DOWNTO 0);
   
   BEGIN
      IF (NOT rst = '1') THEN
         txd_reg <= '1';    
         state_tras <= "0000";    
    	 txd_buf <="11110000";   --"w"    
         trasstart <='1';

--         txd_buf<="01010101";

      ELSE IF(clkbaud8x'EVENT AND clkbaud8x = '1') THEN


      if(NOT send_read='1')then 
         trasstart<='0';
      else 
         trasstart<='1';
      end if; 

      if(send_read='0' and rec_read='1') then 
          send_write<='0';
      end if;

--      trasstart<='0';
      
      if(trasstart='1')then
      CASE state_tras IS
               WHEN "0000" =>  --发送起始位
                   IF (clkbaud_tras = '1') THEN
                       txd_reg <= '0';    
                       state_tras <= state_tras + "0001";    
--                       varTime:=0;
                       txd_buf<=send_data;
                       --txd_buf:="01010101";

                   ELSE
                       state_tras <= "0000";    
                   END IF;
               WHEN "0001" => --发送第1位
                   IF (clkbaud_tras = '1') THEN
                       txd_reg <= txd_buf(0);    
                       txd_buf(6 DOWNTO 0)<= txd_buf(7 DOWNTO 1);    
                       state_tras <= state_tras + "0001";   
                        
                   else null;
                   END IF;

               WHEN "0010" => --发送第2位
                   IF (clkbaud_tras = '1') THEN
                       txd_reg <= txd_buf(0);    
                       txd_buf(6 DOWNTO 0) <= txd_buf(7 DOWNTO 1);    
                       state_tras <= state_tras + "0001";    
                   else null;
                   END IF;

               WHEN "0011" => --发送第3位
                   IF (clkbaud_tras = '1') THEN
                       txd_reg <= txd_buf(0);    
                       txd_buf(6 DOWNTO 0) <= txd_buf(7 DOWNTO 1);    
                       state_tras <= state_tras + "0001";    
                   else null;
                   END IF;

               WHEN "0100" => --发送第4位
                   IF (clkbaud_tras = '1') THEN
                       txd_reg <= txd_buf(0);    
                       txd_buf(6 DOWNTO 0) <= txd_buf(7 DOWNTO 1);    
                       state_tras <= state_tras + "0001";    
                   else null;
                   END IF;

               WHEN "0101" => --发送第5位
                   IF (clkbaud_tras = '1') THEN
                       txd_reg <= txd_buf(0);    
                       txd_buf(6 DOWNTO 0) <= txd_buf(7 DOWNTO 1);    
                       state_tras <= state_tras + "0001";    
                   else null;
                   END IF;

               WHEN "0110" => --发送第6位
                   IF (clkbaud_tras = '1') THEN
                       txd_reg <= txd_buf(0);    
                       txd_buf(6 DOWNTO 0) <= txd_buf(7 DOWNTO 1);    
                       state_tras <= state_tras + "0001";    
                   else null;
                   END IF;

               WHEN "0111" => --发送第7位
                   IF (clkbaud_tras = '1') THEN
                       txd_reg <= txd_buf(0);    
                       txd_buf(6 DOWNTO 0) <= txd_buf(7 DOWNTO 1);    
                       state_tras <= state_tras + "0001";    
                   else null;
                   END IF;

               WHEN "1000" => --发送第8位
                   IF (clkbaud_tras = '1') THEN
                       txd_reg <= txd_buf(0);    
                       txd_buf(6 DOWNTO 0) <= txd_buf(7 DOWNTO 1);    
                       state_tras <= state_tras + "0001";
                       
                       --trasstart <= '0';    
                   else null;
                   END IF;

               WHEN "1001" =>  --发送停止位
                   IF (clkbaud_tras = '1') THEN
                           txd_reg <= '1';    
--                           state_tras <= state_tras + "0001";    
                           --trasstart <= '0';
                           state_tras <=state_tras+"0001";
                           --trasstart <= '0';
                           --send_write<='1';
                    END IF;

--               WHEN "1010" =>  
--                   IF (clkbaud_tras = '1') THEN
--                       state_tras<="0000";
--                       trasstart <= '0';
--                       send_write<='1';
--                   END IF;

               WHEN OTHERS  =>
                       state_tras<="0000";
                       trasstart <= '0';
                       send_write<='1';
  
--                   IF (clkbaud_tras = '1') THEN
--                           state_tras <= state_tras + "0001";    
--                           trasstart <='1';--------------------
--                   END IF;
            END CASE;

        end if;
        end if;--if(trasstart='1')
        end if;
    END PROCESS;               

--   PROCESS(clkbaud8x,rst)
--   BEGIN
--      IF (NOT rst = '1') THEN
--         txd_reg <= '1';    
--         trasstart <= '0';    
--         txd_buf <= "01010101";    
--         state_tras <= "0000";    
--         send_state <= "000";    
--         key_entry2 <= '1';
--			txd_buf <= "01110111";   --"w"    
--      ELSE IF(clkbaud8x'EVENT AND clkbaud8x = '1') THEN
--     
--            CASE state_tras IS
--               WHEN "0000" =>  --发送起始位
--                        IF ((NOT trasstart='1') AND (send_state < "111") ) THEN
--                           trasstart <= '1';    
--                        ELSE
--                           IF (send_state < "111") THEN
--                              IF (clkbaud_tras = '1') THEN
--                                 txd_reg <= '0';    
--                                 state_tras <= state_tras + "0001";    
--                             END IF;
--                           ELSE
--                              key_entry2 <= '0';    
--                              state_tras <= "0000";    
--                           END IF;
--                        END IF;
--               WHEN "0001" => --发送第1位
--                        IF (clkbaud_tras = '1') THEN
--                           txd_reg <= txd_buf(0);    
--                           txd_buf(6 DOWNTO 0) <= txd_buf(7 DOWNTO 1);    
--                           state_tras <= state_tras + "0001";    
--                        END IF;
--               WHEN "0010" =>  --发送第2位
--                        IF (clkbaud_tras = '1') THEN
--                           txd_reg <= txd_buf(0);    
--                           txd_buf(6 DOWNTO 0) <= txd_buf(7 DOWNTO 1);    
--                           state_tras <= state_tras + "0001";    
--                        END IF;
--               WHEN "0011" =>  --发送第3位
--                        IF (clkbaud_tras = '1') THEN
--                           txd_reg <= txd_buf(0);    
--                           txd_buf(6 DOWNTO 0) <= txd_buf(7 DOWNTO 1);    
--                           state_tras <= state_tras + "0001";    
--                        END IF;
--               WHEN "0100" => --发送第4位
--                        IF (clkbaud_tras = '1') THEN
--                           txd_reg <= txd_buf(0);    
--                           txd_buf(6 DOWNTO 0) <= txd_buf(7 DOWNTO 1);    
--                           state_tras <= state_tras + "0001";    
--                        END IF;
--               WHEN "0101" => --发送第5位
--                        IF (clkbaud_tras = '1') THEN
--                           txd_reg <= txd_buf(0);    
--                           txd_buf(6 DOWNTO 0) <= txd_buf(7 DOWNTO 1);    
--                           state_tras <= state_tras + "0001";    
--                        END IF;
--               WHEN "0110" => --发送第6位
--                        IF (clkbaud_tras = '1') THEN
--                           txd_reg <= txd_buf(0);    
--                           txd_buf(6 DOWNTO 0) <= txd_buf(7 DOWNTO 1);    
--                           state_tras <= state_tras + "0001";    
--                        END IF;
--               WHEN "0111" => --发送第7位
--                        IF (clkbaud_tras = '1') THEN
--                           txd_reg <= txd_buf(0);    
--                           txd_buf(6 DOWNTO 0) <= txd_buf(7 DOWNTO 1);    
--                           state_tras <= state_tras + "0001";    
--                        END IF;
--               WHEN "1000" =>  --发送第8位
--                        IF (clkbaud_tras = '1') THEN
--                           txd_reg <= txd_buf(0);    
--                           txd_buf(6 DOWNTO 0) <= txd_buf(7 DOWNTO 1);    
--                           state_tras <= state_tras + "0001";    
--                        END IF;
--               WHEN "1001" =>  --发送停止位
--                        IF (clkbaud_tras = '1') THEN
--                           txd_reg <= '1';    
--                           txd_buf <= "01010101";    
--                           state_tras <= state_tras + "0001";    
--                        END IF;
--               WHEN "1111" =>
--                        IF (clkbaud_tras = '1') THEN
--                           state_tras <= state_tras + "0001";    
--                           send_state <= send_state + "001";    
--                           trasstart <= '0';    
--                           CASE send_state IS
--                              WHEN "000" =>
--                                       txd_buf <= "01100101"; --"e"   
--                              WHEN "001" =>
--                                       txd_buf <= "01101100"; --"l"   
--                              WHEN "010" =>
--                                       txd_buf <= "01100011";  --"c"  
--                              WHEN "011" =>
--                                       txd_buf <= "01101111"; --"o"  
--                              WHEN "100" =>
--                                       txd_buf <= "01101101";  --"m"  
--                              WHEN "101" =>
--                                       txd_buf <= "01100101";-- "e"   
--                              WHEN OTHERS  =>
--                                       txd_buf <= "01010101";  
--                              
--                           END CASE;
--                        END IF;
--               WHEN OTHERS  =>
--                        IF (clkbaud_tras = '1') THEN
--                           state_tras <= state_tras + "0001";    
--                           trasstart <= '1';    
--                        END IF;
--               
--            END CASE;
--         END IF;
--      END IF;

--   END PROCESS;




END arch;

⌨️ 快捷键说明

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