📄 rs232_rec2.vhd.bak
字号:
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 + -