文档详情

串口通信FPGA实现.doc

发布:2017-08-14约6.83千字共12页下载文档
文本预览下载声明
FPGA设计与应用 实验报告 班级: 姓名: 学号: 日期:年月日 实验性质:验证性 实验类型:必做 开课单位:电信院 学时:2学时 一、实验目的 1、了解串口通信的基本原理; 2、掌握锁相环的基本原理和使用方法; 3、掌握起始位和停止位的含义及实现方法; 4、掌握VHDL状态机的基本使用方法; 5、掌握基本的接口设计和调试技巧; 二、实验准备 2.1 原理串行线缆的两端事先约定好串行传输的参数(传输速度、传输格式等当没有数据传输的时候,发送端向数据线上发送发送端先发送一个来表示传输这样接收端便可以知道有数据到来了开始传输后,数据以约定的速度和格式传输④每次传输完成一个字节之后,都在其后发送一个停止位2.2 锁相环的基本原理(1分) 锁相环。它由三组成:鉴相器(PD)、环路滤波器(LPF)和压控振荡器(VCO)。锁相环的工作原理:压控振荡器的输出经过采集并分频,后基准信号同时输入鉴相器。鉴相器通过比较上述两个信号的差,然后输出一个直流脉冲电压,用它来控制VCO,使它的频率改变。经过短时间,VCO 的输出稳定于某一值。环路一旦进入锁定状态后,压控振荡器的输出信号与环路的输入信号(参考信号)。 三、代码及测试 3.1 顶层原理图如上所示,主要包括三个模块,锁相环(输出57.69MHz)、分频(输出接受时的10倍采样速率和数码管显示速率)、接受(按57.6kbps接受从串口发来的数据)。 分频模块代码: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY DIV IS PORT(CLK : IN STD_LOGIC; --锁相环输出时钟57.69M COUT1 : OUT STD_LOGIC; --分频器输出采样时钟576k COUT2 : OUT STD_LOGIC); --分频器产产生扫描时钟100hz END DIV; ARCHITECTURE BEHAV OF DIV IS BEGIN PROCESS(CLK) VARIABLE COUT1_NUM : STD_LOGIC_VECTOR(5 DOWNTO 0):=(OTHERS = 0); --输出时钟1 计数器 VARIABLE COUT2_NUM : STD_LOGIC_VECTOR(18 DOWNTO 0):=(OTHERS = 0); --输出时钟2 计数? VARIABLE COUT1_1 : STD_LOGIC; VARIABLE COUT2_2 : STD_LOGIC; BEGIN IF RISING_EDGE(CLK) THEN IF COUT1_NUM = 49 THEN COUT1_1 := NOT COUT1_1; COUT1_NUM := (OTHERS = 0); ELSE COUT1_NUM := COUT1_NUM + 1; END IF; IF COUT2_NUM = 288450 THEN COUT2_2 := NOT COUT2_2; COUT2_NUM := (OTHERS = 0); ELSE COUT2_NUM := COUT2_NUM + 1; END IF; COUT1 = COUT1_1; COUT2 = COUT2_2; END IF; END PROCESS; END BEHAV; 接受模块代码: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY COM_REC IS PORT(CLK_10 : IN STD_LOGIC; --输入时钟,按10倍采样,是rs232串口速率的10倍 CLK_DIS : IN STD_LOGIC; -- DISPLAY CLK INNUM : IN STD_LOGIC; --输入的值 LED_EN : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); LED : OUT STD_LOGIC_VECTOR(6 DOWNTO 0)); END; ARCHITECTURE BEHAV OF COM_REC IS TYPE STATE IS (SPARE, READY, REC,
显示全部
相似文档