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

📄 serialport_tx.vhd

📁 VHDL基础的编程源代码
💻 VHD
字号:
--/*****************************************************************************
-- * 源文件:	serialport_tx.vhd
-- * 模块:   	串口发送
-- * 版权:
-- *         	Copyright(C) 北京联华众科科技有限公司
-- *						www.lianhua-zhongke.com.cn
-- * 版本:  	Version 1.0
-- * 
-- * 功能说明:
-- *		   	将并行输入的 8位数据在数据已好信号有效时,通过串口串行发送
-- *			串口工作参数:
-- *			波特率: 9600
-- *			数据位数: 8
-- *			奇偶位: 无
-- *			停止位: 1
-- *
-- * 参数说明:
-- *	       	输出
-- *			tx - 数据发送
-- *
-- *			输入
-- *			data_ready - 输入数据已好信号
-- *			data - 待发送数据
-- *			clock - 波特率频率*2
-- *			reset - 复位信号,低电平有效
-- *
-- *			参数
-- *
-- * 变更记录: 
-- *         2006.01.28, 新建
-- *
-- *****************************************************************************/
LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.std_logic_arith.all;USE ieee.std_logic_unsigned.all;ENTITY serialport_tx IS	PORT	(		tx : OUT STD_LOGIC;		data_ready : IN STD_LOGIC;		data : IN STD_LOGIC_VECTOR(7 downto 0);				clock : IN STD_LOGIC;--baudrate*2		reset : IN STD_LOGIC	);END serialport_tx;ARCHITECTURE serialport_tx_architecture OF serialport_tx IS	BEGIN		PROCESS(clock, reset)		VARIABLE currentState : INTEGER RANGE 0 TO 15 := 0;		VARIABLE nextState : INTEGER RANGE 0 TO 15 := 0;				VARIABLE bit_index : INTEGER RANGE 0 TO 7 := 0;				VARIABLE idata : STD_LOGIC_VECTOR(7 downto 0) := "00000000";		VARIABLE tmp : STD_LOGIC;	BEGIN				IF (reset = '0') THEN			tx <= '1';						currentState := 0;			nextState := 0;						bit_index := 0;						idata := "00000000";						ELSIF(clock = '1' AND clock'EVENT) THEN			currentState := nextState;						IF (currentState = 0) THEN				bit_index := 0;				IF (data_ready = '1') THEN					idata := data;					tx <= '0';										nextState := 1;				ELSE					idata := X"00";					tx <= '1';										nextState := 0;				END IF;			ELSIF (currentState>=1 AND currentState<=9) THEN				IF (bit_index = 8) THEN					tx <= '1';					nextState := 10;				ELSE					tx <= idata(bit_index);					bit_index := bit_index + 1;										nextState := currentState + 1;				END IF;			ELSIF (currentState = 10) THEN				tx <= '1';				nextState := 0;			ELSE				tx <= '1';							nextState := 0;			END IF;					END IF;					END PROCESS;END serialport_tx_architecture;

⌨️ 快捷键说明

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