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

📄 baud_div.vhd

📁 VHDL基础的编程源代码
💻 VHD
字号:
--/*****************************************************************************-- * 源文件:	baud_div.vhd-- * 模块:   	波特率时钟发生器-- * 版权:-- *         	Copyright(C) 北京联华众科科技有限公司-- *						www.lianhua-zhongke.com.cn-- * 版本:  	Version 1.0-- * -- * 功能说明:-- *		   	为串口发送产生工作时钟,产生的时钟的频率为波特率的 2倍。-- *-- * 参数说明:-- *	       	输出-- *			baudrate_clock - 波特率的 2倍时钟-- *-- *			输入-- *			baudrate - 选择不同波特率的外部配置数据-- *			clock - 时钟输入,如 24MHz-- *			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 baud_div IS	PORT	(		baudrate_clock : BUFFER STD_LOGIC;--baudrate*2, for instance, when baudrate is 9600, baudrate_clock is 9600*2		baudrate : IN STD_LOGIC_VECTOR(3 downto 0);		clock : IN STD_LOGIC;--24M		reset : IN STD_LOGIC	);END baud_div;ARCHITECTURE baud_div_architecture OF baud_div IS	BEGIN		PROCESS(clock)		VARIABLE delay_counter: INTEGER RANGE 0 TO 220000;		VARIABLE divisor : INTEGER  RANGE 0 TO 220000;	BEGIN		IF ( reset = '0') THEN			baudrate_clock <= '1';			delay_counter := 0;		ELSIF(clock = '1' AND clock'EVENT) THEN					CASE baudrate IS--(24M/baudrate)/2				WHEN "0000" => divisor := 109091;--110				WHEN "0001" => divisor := 40000;--300				WHEN "0010" => divisor := 10000;--1200				WHEN "0011" => divisor := 5000;--2400				WHEN "0100" => divisor := 2500;--4800				WHEN "0101" => divisor := 1250;--9600				WHEN "0110" => divisor := 625;--19200				WHEN "0111" => divisor := 312;--38400				WHEN "1000" => divisor := 208;--57600				WHEN "1001" => divisor := 104;--115200				WHEN "1010" => divisor := 72;--230400				WHEN "1011" => divisor := 36;--460800				WHEN "1100" => divisor := 18;--921600				WHEN OTHERS => divisor := 1250;--9600			END CASE;					IF (delay_counter = divisor/2-1) THEN				delay_counter := 0;				baudrate_clock <= NOT baudrate_clock;			ELSE				delay_counter := delay_counter+1;			END IF;				END IF;			END PROCESS;END baud_div_architecture;

⌨️ 快捷键说明

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