经测试的FPGA串口通信VHDL程序

经测试的FPGA串口通信VHDL程序
经测试的FPGA串口通信VHDL程序

实验三、FPGA串行通用异步收发器设计

实验目的:1、掌握QuartusII6.0等EDA工具软件的基本使用;

2、熟悉VHDL硬件描述语言编程及其调试方法;

3、学习用FPGA实现接口电路设计。

实验内容:

本实验目标是利用FPGA逻辑资源,编程设计实现一个串行通用异步收发器。实验环境为EDA实验箱。电路设计采用VHDL硬件描述语言编程实现,开发软件为QuartusII6.0。

1、UART简介

UART(Universal Asynchronous Receiver Transmitter通用异步收发器)是一种应用广泛的短距离串行传输接口。常常用于短距离、低速、低成本的通讯中。8250、8251、NS16450等芯片都是常见的UART器件。

基本的UART通信只需要两条信号线(RXD、TXD)就可以完成数据的相互通信,接收与发送是全双工形式。TXD是UART发送端,为输出;RXD是UART接收端,为输入。

UART的基本特点是:

(1)在信号线上共有两种状态,可分别用逻辑1(高电平)和逻辑0(低电平)来区分。在发送器空闲时,数据线应该保持在逻辑高电平状态。

(2)起始位(Start Bit):发送器是通过发送起始位而开始一个字符传送,起始位使数据线处于逻辑0状态,提示接受器数据传输即将开始。

(3)数据位(Data Bits):起始位之后就是传送数据位。数据位一般为8位一个字节的数据(也有6位、7位的情况),低位(LSB)在前,高位(MSB)在后。

(4)校验位(parity Bit):可以认为是一个特殊的数据位。校验位一般用来判断接收的数据位有无错误,一般是奇偶校验。在使用中,该位常常取消。

(5)停止位:停止位在最后,用以标志一个字符传送的结束,它对应于逻辑1状态。

(6)位时间:即每个位的时间宽度。起始位、数据位、校验位的位宽度是一致的,停止位有0.5位、1位、1.5位格式,一般为1位。

(7)帧:从起始位开始到停止位结束的时间间隔称之为一帧。

(8)波特率:UART的传送速率,用于说明数据传送的快慢。在串行通信中,数据是按位进行传送的,因此传送速率用每秒钟传送数据位的数目来表示,称之为波特率。如波特率9600=9600bps(位/秒)。

UART的数据帧格式为:

FPGA UART系统组成:如下图所示,FPGA UART由三个子模块组成:波特率发生器;接收模块;发送模块;

2、模块设计:

系统由四部部分组成:顶层模块;波特率发生器;UART接收器;UART发送器

1)顶层模块

异步收发器的顶层模块由波特率发生器、UART接收器和UART发送器构成。

UART发送器的用途是将准备输出的并行数据按照基本UART帧格式转为TXD信号串行输出。

UART接收器接收RXD串行信号,并将其转化为并行数据。

波特率发生器就是专门产生一个远远高于波特率的本地时钟信号对输入RXD不断采样,使接收器与发送器保持同步。

2)波特率发生器

波特率发生器实际上就是一个分频器。

可以根据给定的系统时钟频率(晶振时钟)和要求的波特率算出波特率分频因子,算出的波特率分频因子作为分频器的分频数。

波特率分频因子可以根据不同的应用需要更改。

3)UART接收器

由于串行数据帧和接收时钟是异步的,由逻辑1转为逻辑0可以被视为一个数据帧的起始位。

然而,为了避免毛刺影响,能够得到正确的起始位信号,必须要求接收到的起始位在波特率时钟采样的过程中至少有一半都是属于逻辑0才可认定接收到的是起始位。由于内部采样时钟bclk周期(由波特率发生器产生)是发送或接收波特率时钟频率的16倍,所以起始位需要至少8个连续bclk周期的逻辑0被接收到,才认为起始位接收到,接着数据位和奇偶校验位将每隔16个bclk周期被采样一次(即每一个波特率时钟被采样一次)。

如果起始位的确是16个bclk周期长,那么接下来的数据将在每个位的中点处被采样。

UART接收器的接收状态机

接收状态机一共有5个状态:R_START(等待起始位);R_CENTER(求中点);

R_W AIT(等待采样);R_SAMPLE(采样);R_STOP(停止位接收)。

R_ST ART状态

当UART接收器复位后,接收状态机将处于这一个状态。

在此状态,状态机一直在等待RXD的电平跳转,从逻辑1变为逻辑0,即起始位,这意味着新的一帧UART数据帧的开始,一旦起始位被确定,状态机将转入R_CENTER状态。

状态图中的RXD_SYNC信号是RXD的同步信号,因为在进行逻辑1或逻辑0判断时,不希望检测的信号是不稳定的,所以不直接检测RXD信号,而是检测经过同步后的RXD_SYNC信号。

R_CENTER状态

对于异步串行信号,为了使每一次都检测到正确的位信号,而且在较后的数据位检测时累计误差较小,显然在每位的中点检测是最为理想的。

在本状态,就是由起始位求出每位的中点,通过对bclk的个数进行计数(RCNT16),但计数值不是想当然的“1000”,要考虑经过一个状态,也即经过了一个bclk周期,所希望得到的是在采样时1/2位。

另外,可能在R_START状态检测到的起始位不是真正的起始位,可能是一个偶然出现的干扰尖脉冲(负脉冲)。这种干扰脉冲的周期是很短的,所以可以认为保持逻辑0超过1/4个位时间的信号一定是起始位。

R_W AIT状态

当状态机处于这一状态,等待计满15个bclk,在第16个bclk是进入R_SAMPLE状态进行数据位的采样检测,同时也判断是否采集的数据位长度已达到数据帧的长度(FRAMELEN),如果到来,就说明停止位来临了。

FRAMELEN在设计时是可更改的(使用了Generic),在本设计中默认为8,即对应的UART工作在8位数据位、无校验位格式。

R_SAMPLE状态

即数据位采样检测,完成后无条件状态机转入R_WAIT状态,等待下次数据位的到来。

R_STOP状态

无论停止位是1还是1.5位,或是2位,状态机在R_STOP不具体检测RXD,只是输出帧接收完毕信号(REC_DONE<=‘1’),停止位后状态机转回到R_START状态,等待下一个帧的起始位。

4)UART发送器

发送器只要每隔16个bclk周期输出1个数据即可,次序遵循第1位是起始位,第8位是停止位。在本设计中没有校验位,但只要改变Generic参数FrameLen,也可以加入校验位,停止位是固定的1位格式。

发送状态机的状态图

发送状态机一共有5个状态:X_IDLE(空闲);X_START(起始位);X_WAIT(移位等待);X_SHIFT(移位);X_STOP(停止位)。

X_IDLE状态:

当UART被复位信号复位后,状态机将立刻进入这一状态。

在这个状态下,UART的发送器一直在等待一个数据帧发送命令XMIT_CMD。

XMIT_CMD_P信号是对XMIT_CMD的处理,XMIT_CMD_P是一个短脉冲信号。这时由于XMIT_CMD是一个外加信号,在FPGA之外,不可能对XMIT_CMD的脉冲宽度进行限制,如果XMIT_CMD有效在UART发完一个数据帧后仍然有效,那么就会错误地被认为,一个新的数据发送命令又到来了,UART发送器就会再次启动UART帧的发送,显然该帧的发送是错误的。

在此对XMIT_CMD进行了脉冲宽度的限定,XMIT_CMD_P就是一个处理后的信号。

当XMIT_CMD_P=‘1’,状态机转入X_START,准备发送起始位。

X_ST ART状态:

在这个状态下,UART的发送器一个位时间宽度的逻辑0信号至TXD,即起始位。紧接着状态机转入X_W AIT状态。

XCNT16是bclk的计数器

X_W AIT状态

同UART接收状态机中的R_W AIT状态类似。

X_SHIFT状态

当状态机处于这一状态时,实现待发数据的并串转换。转换完成立即回到X_WAIT状态。

X_STOP

停止位发送状态,当数据帧发送完毕,状态机转入该状态,并发送16个bclk周期的逻

辑1信号,即1位停止位。

状态机送完停止位后回到X_IDLE状态,并等待另一个数据帧的发送命令。

实验步骤:

1、创建工程文件

按照Quartus软件新建工程向导建立工程,工程名设为:uart_test(可自行命名)。

2、子模块电路设计(包括各个模块的功能仿真)

1)波特率发生器

程序编写:在“文件”菜单下选择“New”,在弹出的窗口点击“VHDL File”点击“OK”打开vhdl编辑窗口。

编辑输入波特率发生器程序,编辑完毕后保存,文件名保存为“baud”

(注:文件名必须与程序中实体名一致)

选中“Add file to current project”选项,添加当前文件到项目。

--文件名:baud.vhd.

--功能:本实验想要实现的波特率为:9600,EDA实验箱上晶振频率为:4MHZ,--波特率发生器的分频数计算如下式:

--4000000/(16*9600)=26

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity baud is

generic(framlenr:integer:=26);

Port (clk,resetb:in std_logic;

bclk :out std_logic);

end baud;

architecture Behavioral of baud is

begin

process(clk,resetb)

variable cnt:integer;

begin

if resetb='1' then cnt:=0; bclk<='0'; --复位

elsif rising_edge(clk) then

if cnt>=framlenr then cnt:=0; bclk<='1';--设置分频系数

else cnt:=cnt+1; bclk<='0';

end if;

end if;

end process;

end Behavioral;

文件编译:保存文件后,选择“Project”菜单,点击“Set as Top-Level Entity”项,把当前文件设置为顶层实体。

(注:Quartus环境下所有操作(综合、编译、仿真、下载等)都只对顶层实体进行,所以编译任何程序前,必须先设置该选项,把当前要编译的文件设置为顶层实体后,才能对该文件进行编译等操作)

打开“Processing”菜单,点击“Start Compilation”执行完全编译

状态窗口显示编译过程进度信息

编译结束,系统会弹出编译结束窗口,报告错

误与警告数,点击“确定”。

编译报告给出所有编译结果信息,包括硬件信

息、资源占用率等。

错误修改:如果程序中有错误,需要根据“Messages”消息栏给出的错误提示修改程序,保存后须再次编译,直至所有错误均改正后,方可执行下一步操作。警告信息可以忽略。

波形仿真:

1.建立波形图文件

关闭编译报告窗口,在“文件”菜单下选择“New”,选中“other files”标签页,在弹出的窗口点击“V ector Waveform File”点击“OK”打开波形编辑窗口。

波形图编辑窗口

2.定义仿真观测的输入输出节点

在波形编辑窗口左侧栏内单击鼠标右键,出现浮动菜单,选择“Insert Note or Bus…”出现“Insert Note or Bus…”对话框,点击“Node Finder…”按键,出现“Node Finder”对话框,如下图所示。

在图中“Filter:”选项下选择管脚类型为“Pins:all”,然后单击List按钮,可在左下侧区域看到设计项目中的输入输出信号,单击按钮“= 〉”,将这些信号选择到“Selected Nodes”区,表示对这些信号进行观测,单击OK

此时的波形编辑窗口如下图所示。

保存波形文件,文件名为uart_test.vwf(注:扩展名默认不填,文件名与项目名同名)

3.为输入信号赋值

波形编辑器窗口左侧为信号赋值工具条,根据实际要求点选工具按钮对输入信号赋值。

1)为时钟信号clk赋值:单击clk,使其呈蓝色即选中了clk,单击为时钟信号赋值工

具按钮,弹出Clock对话框,在Period框中输入合适的时钟周期数,其它值按默认即可,点击OK。

2)为复位信号resetb赋值:选中resetb,单击赋值0工具条按钮,为期赋值为逻辑0。

3)设置仿真时间

选择Edit菜单下的End Time…选项,打开End Time对话框,在time框内入输100单位为us。

再次保存波形文件,窗口如下

4.时序仿真

选择Processing菜单下的Begin Simulation选项,即开始波形仿真。状态窗口会显示出仿真进程,

仿真结束后可以看到仿真结果波形,如下图所示。观察波形可用工具条上的放大缩小按钮放大缩小波形图,下图即为已经缩小了很多倍后的波形图。

结果分析:图上可以观察到输出端bckl等间隔的有脉冲信号输出,通过标尺可以计算出它的脉冲输出频率及其与clk输入信号的关系。

该程序实现的是波特率发生器,输出频率为时钟输入频率的1/26。

生成符号文件:

通过波形仿真可以确定程序功能是否正确后,就可以把该程序生成符号文件,以便在后面的程序中调用。具体操作是:打开File文件菜单,选择Creat/Updata菜单项,右侧弹出子菜单再选择Creat Symbol files for Current file把当前文件创建成符号文件。状态窗口有进度信息显示。

生成的符号文件可以通过打开原理图窗口调入,进行验证。下图为生成的波特率模块。

按照生成波特率模块的步骤完成以下其它模块的程序编写,并进行仿真波形、功能验证,仿真通过后生成各自的符号文件。这里只给出仿真得到的波形图。

2)UART发送器

UART发送器程序:

--文件名:transfer.vhd

--功能:UART发送器

--说明:系统由五个状态(x_idle,x_start,x_wait,x_shift,x_stop)和一个进程构成。

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity transfer is

generic(framlent:integer:=8); --类属说明

Port (bclkt,resett,xmit_cmd_p:in std_logic; --定义输入输出信号

txdbuf :in std_logic_vector(7 downto 0);

txd ,txd_done :out std_logic);

end transfer;

architecture Behavioral of transfer is

type states is (x_idle,x_start,x_wait,x_shift,x_stop); --定义5个子状态

signal state:states:=x_idle;

signal tcnt:integer:=0;

begin

process(bclkt,resett,xmit_cmd_p,txdbuf) --主控时序进程

variable xcnt16:std_logic_vector(4 downto 0):="00000"; --定义中间变量

variable xbitcnt:integer:=0;

variable txds:std_logic;

begin

if resett='1' then state<=x_idle; --复位,txd输出保持1

txd_done<='0';

txds:='1';

elsif rising_edge(bclkt) then

case state is

when x_idle=> --状态1,等待数据帧发送命令

if xmit_cmd_p='1' then state<=x_start;txd_done<='0';

else state<=x_idle;

end if;

when x_start=> --状态2,发送信号至起始位

if xcnt16="01111" then state<=x_shift; xcnt16:="00000";

else xcnt16:=xcnt16+1; txds:='0'; state<=x_start; --输出开始位,'0'

end if;

when x_wait=> --状态3,等待状态

if xcnt16>="01110" then

if xbitcnt=framlent then state<=x_stop; xbitcnt:=0; xcnt16:="00000";

else state<=x_shift;

end if;

xcnt16:="00000";

else xcnt16:=xcnt16+1; state<=x_wait;

end if;

when x_shift=> --状态4,将待发数据进行并串转换

txds:=txdbuf(xbitcnt);

xbitcnt:=xbitcnt+1;

state<=x_wait;

when x_stop=> --状态5,停止位发送状态

if xcnt16>="01111" then

if xmit_cmd_p='0' then state<=x_idle;--高电平保持时间应低于一个帧发送的时间

xcnt16:="00000";

else xcnt16:=xcnt16; state<=x_stop;

end if;

txd_done<='1';

else xcnt16:=xcnt16+1; txds:='1'; state<=x_stop;

end if;

when others=>state<=x_idle;

end case;

end if;

txd<=txds;

end process;

end Behavioral;

生成的模块如下图所示:

仿真波形:

说明:1)resett:为复位信号,高电平复位,初始时刻需要手动设置一段时间的高电平2)Bclkt为波特率发生信号,用时钟信号定义,周期设为10ns。

3)为了得到完整的仿真结果,仿真时间要设的长一些(100us)

4)xmit_cmd_p:为发送控制信号,开始时刻设置一段高电平

5)txdbuf:为要发送的八位数据,点击“+”后,可对每一个位信号分别赋值,

本波形设置为txdbuf[7]、[5]、[3]、[1]位置“1”,[6]、[4]、[2]、[0]位置“0”

6)txd:为发送器发出的串行信号

7)txd_done:为发送结束信号,高电平有效

3)UART接收器

UART接收器程序:

--文件名:reciever.vhd.

--功能:UART接受器。

--系统由五个状态(r_start,r_center,r_wait,r_sample,r_stop)和两个进程构成

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity reciever is

generic(framlenr:integer:=8); --传送的数据位为8位

Port ( bclkr,resetr,rxdr:in std_logic; --定义输入输出信号

r_ready :out std_logic;

rbuf :out std_logic_vector(7 downto 0) );

end reciever;

architecture Behavioral of reciever is

type states is (r_start,r_center,r_wait,r_sample,r_stop);--定义各子状态

signal state:states:=r_start;

signal rxd_sync:std_logic; -- rxd_sync内部信号,接受rxd输入

begin

pro1:process(rxdr)

begin

if rxdr='0' then rxd_sync<='0';

else rxd_sync<='1';

end if;

end process;

pro2:process(bclkr,resetr,rxd_sync) --主控时序、组合进程

variable count:std_logic_vector(3 downto 0); --定义中间变量

variable rcnt:integer:=0; -- rcnt为接收的数据位数计数

variable rbufs:std_logic_vector(7 downto 0);

begin

if resetr='1' then state<=r_start; count:="0000"; --复位

elsif rising_edge(bclkr) then --波特率信号的上升沿

--状态机

case state is

when r_start=> --状态1,等待起始位

if rxd_sync='0' then state<=r_center;

r_ready<='0';

rcnt:=0;

else state<=r_start; r_ready<='0';

end if;

when r_center=> --状态2,求出每位的中点

if rxd_sync='0' then --每个数据位被分为16等分,中点为8

if count="0100" then state<=r_wait; count:="0000";

else count:=count+1; state<=r_center;

end if;

else state<=r_start;

end if;

when r_wait=> --状态3,等待状态

if count>="1110" then

if rcnt=framlenr then state<=r_stop;

-- rcnt=framlenr表示数据接收够8位

else state<=r_sample;

end If;

count:="0000";

else count:=count+1; state<=r_wait;

end if;

when r_sample=>rbufs(rcnt):=rxd_sync; --状态4,数据位采样检测

rcnt:=rcnt+1;

state<=r_wait;

when r_stop=>r_ready<='1'; rbuf<=rbufs; --状态5,输出帧接收完毕信号

state<=r_start;

when others=>state<=r_start;

end case;

end if;

end process;

end Behavioral;

生成的模块:

仿真波形:

说明:1)resett:为复位信号,高电平复位,初始时刻需要手动设置一段时间的高电平2)Bclkt为波特率发生信号,用时钟信号定义,周期设为10ns。

3)为了得到完整的仿真结果,仿真时间要设的长一些(100us)

4)rxdr:为预接收的串行信号,这里用周期信号模拟,周期设为50ns

5)rbuf:为接收到的八位数据

6)rxd_ready:为接收器接收满8位数据后发出的结束信号,高电平有效

4)其它功能模块

为了更直观的反应串口通信的运行结果,本实验还另外设计了两个模块,使得程序在做硬件功能验证时更加直观。

A、分频器模块

实验箱提供的晶振频率为:4Mhz,实验中需要较低的频率信号驱动计数器计数和提供给发送器触发信号(xmit_cmd_p),本实验分频器设置分频数为1000000,得到4hz脉冲输出。

分频器程序:

--文件名:clock_div.vhd.

--功能:实验开发板晶振频率为:4MHZ,经过分频后得到4HZ脉冲频率

--分频数计算:4000000/4 = 1000000

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity clock_div is

generic(framlenr:integer:=1000000);

Port (clk,resetb:in std_logic;

bclk: inout std_logic);

end clock_div;

architecture Behavioral of clock_div is

begin

process(clk,resetb)

variable cnt:integer;

begin

if resetb='1' then cnt:=0; bclk<='0';

elsif rising_edge(clk) then

if cnt>=framlenr then cnt:=0; bclk<='0';

elsif cnt>=framlenr/2 then cnt:=cnt+1;bclk<='1';

else cnt:=cnt+1; bclk<='0';

end if;

end if;

end process;

end Behavioral;

生成的模块:

B、译码显示功能模块

说明:为了使接收器接收到的数据直观的在实验箱上显示出来,增加了译码显示程序,把8位接收数据在LED显示器(即L29)上译码显示。

a:输入信号,接收器接收到的8位数据。

q:输出信号,八位数据经译码后输出。

程序:

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity decoder_8_8 is

Port (

a :in std_logic_vector(7 downto 0);

q :out std_logic_vector(7 downto 0) );

end decoder_8_8;

architecture Behavioral of decoder_8_8 is

begin

process(a)

begin

case a is

when x"00" => q <= "11000000";

when x"01" => q <= "11111001";

when x"02" => q <= "10100100";

when x"03" => q <= "10110000";

when x"04" => q <= "10011001";

when x"05" => q <= "10010010";

when x"06" => q <= "10000010";

when x"07" => q <= "11111000";

when x"08" => q <= "10000000";

when x"09" => q <= "10010000";

when x"0a" => q <= "10001000";

when x"0b" => q <= "10000011";

when x"0c" => q <= "11000110";

when x"0d" => q <= "10100001";

when x"0e" => q <= "10000110";

when x"0f" => q <= "10001110";

when others => q <= "11111111";

end case;

end process;

end Behavioral;

生成的模块:

3、顶层文件设计

新建原理图文件

在“文件”菜单下选择“New”,在弹出的窗口点击“Block Diagram/Schematic File”,点击“OK”打开原理图编辑窗口。

在窗口中双击鼠标左键,弹出symbol器件添加窗口,选择Libraries(器件库目录)Project:为用户自己生成的符号库,如图所示,本实验已经建立的baud、transfer、reciever 等符号都已经在目录中列出。

Altera/…/libraries/:为系统自带的器件库目录

单击需要添加的模块,点击OK即可通过鼠标拖动到图中相应位置,按照下图添加器件并连接相应管脚。

添加输入和输出管脚,符号库中输入为input,输出为output,可在Symbol窗口的Name 栏内直接输入已知器件的名称来添加器件。

完成整个原理图文件的编辑后,保存文件名为uart_test。设置该文件为顶层文件后,执行全编译。若发现错误,进行修改,再次编译直至成功。

4、器件管脚分配

打开Assignments菜单,选择Pins选项

弹出管脚分频窗口,在Location位置点击下拉按钮选择相应管脚

基于FPGA串口通信的电路和程序设计

中北大学 毕业设计中期总结 学生姓名:袁财源学号:1206044145 学院:仪器科学与技术 专业:电子科学与技术 设计题目:基于FPGA串口通信的 电路和程序设计 指导教师: 郭涛 2015 年1月5日

毕业设计中期总结

1.开题以来所做的具体工作和取得的进展或成果(方案、图纸、代码等支撑,任务书要求与已完成工作对照表) 1.设计方案 RS-232-C总线标准设有25条信号线,包括一个主通道和一个辅助通道,在多数情况下主要使用主通道,对于一般双工通信,仅需几条信号线就可实现,如一条发送线、一条接收线及一条地线。使用RS232串口通信接口模块的目的是用于电平转换。由于FPGA输出的TTL电平与串口发送的电平不一致,因此,采用电平转换器MAX232。MAX232是一种双组驱动器/接收器,片内含有一个电容性电压发生器,以便在单5V 电源供电时提供EIA/TIA-232-E电平,来实现RS232信号和单片机串口信号之间的电平转换。其工作电压3.0-5.5V,可将TTL电平转换成RS-232标准电平。从而实现了FPGA 与上位机之间的串口通信。 FPGA上位机 MAX232 电路主要框图 2.相关知识

MAX232芯片结构 第一部分是电荷泵电路。由1、2、3、4、5、6脚和4只电容构成。功能是产生+12v 和-12v两个电源,提供给RS-232串口电平的需要。 第二部分是数据转换通道。由7、8、9、10、11、12、13、14脚构成两个数据通道。其中13脚(R1IN)、12脚(R1OUT)、11脚(T1IN)、14脚(T1OUT)为第一数据通道。8脚(R2IN)、9脚(R2OUT)、10脚(T2IN)、7脚(T2OUT)为第二数据通道。TTL/CMOS数据从11引脚(T1IN)、10引脚(T2IN)输入转换成RS-232数据从14脚(T1OUT)、7脚(T2OUT)送到电脑DB9插头;DB9插头的RS-232数据从13引脚(R1IN)、8引脚(R2IN)输入转换成TTL/CMOS数据后从12引脚(R1OUT)、9引脚(R2OUT)输出。 第三部分是供电。15脚GND、16脚VCC(+5v)。 RS232 (DB9)引脚定义 1 :DCD :载波检测。主要用于Modem通知计算机其处于在线状态,即Modem检测到拨号音,处于在线状态。 2 :RXD:此引脚用于接收外部设备送来的数据;在你使用Modem时,你会发现RXD 指示灯在闪烁,说明RXD引脚上有数据进入。 3 :TXD:此引脚将计算机的数据发送给外部设备;在你使用Modem时,你会发现TXD 指示灯在闪烁,说明计算机正在通过TXD引脚发送数据。 4 :DTR:数据终端就绪;当此引脚高电平时,通知Modem可以进行数据传输,计算机已经准备好。 5 :GND:信号地;此位不做过多解释。 6 :DSR:数据设备就绪;此引脚高电平时,通知计算机Modem已经准备好,可以进行数据通讯了。 7 :RTS:请求发送;此脚由计算机来控制,用以通知Modem马上传送数据至计算机;否则,Modem将收到的数据暂时放入缓冲区中。 8 :CTS: 清除发送;此脚由Modem控制,用以通知计算机将欲传的数据送至Modem。 9 :RI : Modem通知计算机有呼叫进来,是否接听呼叫由计算机决定。

串口通信实验报告全版.doc

实验三双机通信实验 一、实验目的 UART 串行通信接口技术应用 二、实验实现的功能 用两片核心板之间实现串行通信,将按键信息互发到对方数码管显示。 三、系统硬件设计 (1)单片机的最小系统部分 (2)电源部分 (3)人机界面部分

数码管部分按键部分 (4)串口通信部分 四、系统软件设计 #include #define uchar unsigned char #define uint unsigned int void send(); uchar code0[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//0-9的数码管显示 sbit H1=P3^6; sbit H2=P3^7;

sbit L1=P0^5; sbit L2=P0^6; sbit L3=P0^7; uint m=0,i=0,j; uchar temp,prt; /***y延时函数***/ void delay(uint k) { uint i,j; //定义局部变量ij for(i=0;i

{ m=1; //KEY1键按下 return(m); } if(H2==0) { m=4; //KEY4键按下 return(m); } } } if(L2==0) { delay(5); if (L2==0) { L2=0;H1=1;H2=1; if(H1==0) { m=2; //KEY2键按下 return(m); } if(H2==0) { m=5; //KEY5键按下 return(m); } } } if(L3==0) { delay(5); if (L3==0) { L3=0;H1=1;H2=1; if(H1==0) { m=3; //KEY3键按下

测试技术题目及答案

2、离散信号的频谱是_连续_(连续/离散)信号。 5、如果一个信号的最高频率为60Hz ,为了防止在时域采样过程中出现混叠现象,采样频率应该大于_120_Hz 。 7、调幅是指一个高频的正(余)弦信号与被测信号_相乘__,使高频信号的幅值随被测信号的_频率变化_而变化。信号调幅波可以看作是载波与调制波的_相乘__ 。 9、绘制周期信号)(t x 的单边频谱图,依据的数学表达式是_傅氏三角级数中的各项系数_, 而双边频谱图的依据数学表达式是_傅氏复指数级数中的各项系数。 11、单位脉冲函数0()t t δ-与在0t 点连续的模拟信号()f t 的下列积分:dt t t t f )()(0-? ∞ ∞ -δ= _ f (t0)_。这性质称为_积分筛选特性(抽样特性、筛选特性)。 12、某一阶系统的频率响应函数为1 21)(+= ωωj j H ,输入信号2 sin )(t t x =,则输出信号 )(t y 的频率为=ω__ _1/2__,幅值=y __ =φ_ 0 45-__。 频率保持特性, 13、满足测试装置不失真测试的频域条件是_幅频特性为一常数和_相频特性与频率成线性 关系_。 14、根据载波受调制的参数不同,调制可分为_调幅_、__ 调频_、_调相 _。 15、常用滤波器的上、下截止频率1c f 、2c f 的定义为_ 幅频特性曲线降为最大值的1 倍 时对应的频率为截止频率_,其带宽B = __21c c f f -___,若为倍频程滤波器1c f 与2c f 的关系为_212c c f f =_。 16、若某一信号的自相关函数为)cos(ωτA ,则该信号的均方值为2 x ψ=_A ,均方根值为 x rms 17、RC 低通滤波器中RC 值愈_大_,则上截止频率愈低。 18、从时域看,系统的输出是其输入与该系统__脉冲响应函数__的卷积。 20、当被测信号不随时间而变化或相对观察时间而言其变化是极其缓慢的,此时的测试称为_静态测试 。 21、测试信号随时间而变化的测试称为__动态测试_____。

基于FPGA的通用异步收发器设计(串口通信)

FPGA串行通用异步收发器设计 实验目的:1、掌握QuartusII6.0等EDA工具软件的基本使用; 2、熟悉VHDL硬件描述语言编程及其调试方法; 3、学习用FPGA实现接口电路设计。 实验内容: 本实验目标是利用FPGA逻辑资源,编程设计实现一个串行通用异步收发器。实验环境为EDA实验箱。电路设计采用VHDL硬件描述语言编程实现,开发软件为QuartusII6.0。 1、UART简介 UART(Universal Asynchronous Receiver Transmitter通用异步收发器)是一种应用广泛的短距离串行传输接口。常常用于短距离、低速、低成本的通讯中。8250、8251、NS16450等芯片都是常见的UART器件。 基本的UART通信只需要两条信号线(RXD、TXD)就可以完成数据的相互通信,接收与发送是全双工形式。TXD是UART发送端,为输出;RXD是UART接收端,为输入。 UART的基本特点是: (1)在信号线上共有两种状态,可分别用逻辑1(高电平)和逻辑0(低电平)来区分。在发送器空闲时,数据线应该保持在逻辑高电平状态。 (2)起始位(Start Bit):发送器是通过发送起始位而开始一个字符传送,起始位使数据线处于逻辑0状态,提示接受器数据传输即将开始。 (3)数据位(Data Bits):起始位之后就是传送数据位。数据位一般为8位一个字节的数据(也有6位、7位的情况),低位(LSB)在前,高位(MSB)在后。 (4)校验位(parity Bit):可以认为是一个特殊的数据位。校验位一般用来判断接收的数据位有无错误,一般是奇偶校验。在使用中,该位常常取消。 (5)停止位:停止位在最后,用以标志一个字符传送的结束,它对应于逻辑1状态。 (6)位时间:即每个位的时间宽度。起始位、数据位、校验位的位宽度是一致的,停止位有0.5位、1位、1.5位格式,一般为1位。 (7)帧:从起始位开始到停止位结束的时间间隔称之为一帧。 (8)波特率:UART的传送速率,用于说明数据传送的快慢。在串行通信中,数据是按位进行传送的,因此传送速率用每秒钟传送数据位的数目来表示,称之为波特率。如波特率9600=9600bps(位/秒)。 FPGA UART系统组成:如下图所示,FPGA UART由三个子模块组成:波特率发生器;接收模块;发送模块; 2、模块设计:

自制力测试题(二)

自制力测试题 这是测试你的自制力的题目,你把1到6题的总分加起来,看看你的忍耐力有多大。 跳上跳下的猴子遇到了横着走的螃蟹,他们之间到底发生了什么不可告人的事呢? 1、拿着柿子种子的螃蟹,跟拿着做饭团的猴子在路上相遇,他们互相交换手上的东西,你觉得他们是什么关系? ☆好朋友=0 ☆彼此常常吵架=3 ☆单纯的点头之交=2 ☆彼此第一次见面=1 2、螃蟹吃了从猴子手上拿来的饭团之后变的非常生气.那是为什么呢? ☆饭团馊掉了=1 ☆里面包着螃蟹酱=0 ☆里面包着他最讨厌的梅子=3 ☆里面包芥末=2 3、从螃蟹手中接过柿子种子后,猴子也非常生气,为什么? ☆它根本不会发芽=3 ☆那是做成像柿子种子一样的糖果=1 ☆那是酸梅的种子=0

☆猴子突然想到要等八年才能结出柿子=2 4、决定向猴子报复的螃蟹,找了蜜蜂、石臼、栗子来当打手,这时传来一声,我也要帮忙,你觉得这个新加入的人是谁? ☆坐垫=0 ☆苍蝇=1 ☆水壶=2 ☆剪刀=3 5、猴子知道螃蟹要带打手来,于是,决定带武器去迎击,他会带什么武器呢? ☆竹扫帚=1 ☆用来攻击眼睛的小麦粉=0 ☆锤子=2 ☆菜刀=3 6、螃蟹军团跟拿武器的猴子打架,最后有什么结果 ☆螃蟹军团获胜=3 ☆猴子获胜=2 ☆不分胜负,双方和解=0 ☆只有螃蟹的打手获胜=1 参考解析: A.★总分16分以上★ 时时刻刻都在爆发 你的个性非常暴躁、缺乏自制能力,常把怒火发泄到别人身上。

你的脾气甚至只为了一些小小事,如果在不控制自己的脾气,大家可能会离你而去唷! B.☆总分13-15分☆ 被人打扰时就会爆发 你是比较容易生气的类型,如果别人妨碍到你,你这炸弹会立即引爆。你手边的事受到阻碍,你就会失去理性;就算没人妨碍你,如事情进行的不顺利,你也会迁怒别人。 C.★总分10-12分★ 被人污辱时会爆发 有强烈自尊心的你,在别人面前遭受污辱,就会气到一发不可收拾,就算别人只是开玩笑,一但发起火来,什么也管不了,但其实乱发脾气,可能会让自己的自尊心受更大的伤害唷! D.☆总分7-9分☆ 被人欺骗就会爆发 基本上你非常信赖别人,所以对背叛狠敏感,你一但被情人或好朋友欺骗时,除了生气之外,还会觉得狠受伤,心中的伤痕也狠难平复。 E.★总分4-6分★ 朋友受委屈时就会爆发 你通常不会为了自己而生气,只在重要的人遭遇不幸时你的怒气才会爆发,自己遭遇不幸,你会默默忍耐,但情人或朋友受委屈时,你会火冒三丈,只为了替朋友争一口气

基于fpga的串口通信

基于FPGA的串口通信设计 学号: 姓名: 班级: 指导教师: 电子与控制工程学院

一、串行通信系统 1.1概述 在计算机系统和微机网络的快速发展领域里串行通信在数据通信及控制系统中得到广泛的应用。UART 即Universal AsynchronousReceiver Transmitter 通用异步收发器 协议是数据通信及控制系统中广泛使用的一种全双工串行数据传输协议 在实际工业生产中有时并不使用UART的全部功能。只需将其核心功能集成即可。波特率发生器、接收器和发送器是UART的三个核心功能模块 利用Verilog-HDL语言对这三个功能模块进行描述并加以整合UART是广泛使用的串行数据传输协议。UART允许在串行链路上进行全双工的通信。串行外设用到RS232-C异步串行接口 一般采用专用的集成电路即UART实现。如8250、8251、NS16450等芯片都是常见的UART器件 这类芯片已经相当复杂有的含有许多辅助的模块 如FIFO有时我们不需要使用完整UART的功能和这些辅助功能。或者设计上用到了FPGA/CPLD器件那么我们就可以将所需要的UART功能集成到FPGA内部。使用VHDL或Veriolog -HDL将UART的核心功能集成从而使整个设计更加紧凑、稳定且可靠。本文应用EDA技术 基于FPGA/CPLD器件设计与实现UART。 通信指人与人或人与自然之间通过某种行为或媒介进行的信息交流与传递从广义上指需要信息的双方或多方在不违背各自意愿的情况下无论采用何种方法使用何种媒质 将信息从某方准确安全传送到另方。通信在不同的环境下有不同的解释在出现电波传递通信后通信(Communication)被单一解释为信息的传递是指由一地向另一地进行信息的传输与交换其目的是传输消息。然而通信是在人类实践过程中随着社会生产力的发展对传递消息的要求不断提升使得人类文明不断进步。在各种各样的通信方式中利用“电”来传递消息的通信方法称为电信(Telecommunication) 这种通信具有迅速、准确、可靠等特点且几乎不受时间、地点、空间、距离的限制 因而得到了飞速发展和广泛应用。 1.2串行通信简介 计算机与计算机,计算机与外部设备进行数据交换也称为通信,一般有两种方式并行通信和串行通信。信息的各位数据被同时传送的通信方法是并行通信并行通信依靠I/O接口来实现。并行通信中数据有多少位就需要多少条信号传输线。这种通信方式快,但由于传输线较多,所以成本较高,仅适合近距离通信通常传送距离小于30米。当距离大于30米时则多采用串行通信方式串行通信是指外部设备和计算机间使用一根数据线另外需要地线可能还需要控制线进行数据

UART串口通信实验报告

实验四 UART 串口通信 学院:研究生院 学号:1400030034 姓名:张秋明 一、 实验目的及要求 设计一个UART 串口通信协议,实现“串 <-->并”转换功能的电路,也就是 “通用异步收发器”。 二、 实验原理 UART 是一种通用串行数据总线,用于异步通信。该总线双向通信,可以实 现全双工传输和接收。在嵌入式设计中,UART 用来主机与辅助设备通信,如汽 车音响与外接AP 之间的通信,与PC 机通信包括与监控调试器和其它器件,如 EEPROM 通信。 UART 作为异步串口通信协议的一种,工作原理是将传输数据的每个字符一 位接一位地传输。 其中各位的意义如下: 起始位:先发出一个逻辑” 0的信号,表示传输字符的开始。 资料位:紧接着起始位之后。资料位的个数可以是 4、5、6、7、8等,构成 一个字符。通常采用ASCII 码。从最低位开始传送,靠时钟定位。 奇偶校验位:资料位加上这一位后,使得“ 1的位数应为偶数(偶校验)或奇数 (奇校验),以此来校验资料传送的正确性。 停止位:它是一个字符数据的结束标志。可以是 1位、1.5位、2位的高电 平。由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能 在通信中两台设备间出现了小小的不同步。 因此停止位不仅仅是表示传输的结束, 并且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步 的容忍程度越大,但是数据传输率同时也越慢。 空闲位:处于逻辑“ 1状态,表示当前线路上没有资料传送。 波特率:是衡量资料传送速率的指标。表示每秒钟传送的符号数(symbol )。 一个符号代表的信息量(比特数)与符号的阶数有关。例如资料传送速率为 120 字符/秒,传输使用256阶符号,每个符号代表8bit ,则波特率就是120baud,比 特率是120*8=960bit/s 。这两者的概念很容易搞错。 三、 实现程序 library ieee; use ieee.std 」o gic_1164.all; end uart; architecture behav of uart is en tity uart is port(clk : in std_logic; rst_n: in std 」o gic --系统时钟 --复位信号 rs232_rx: in std 」o gic rs232_tx: out std 」o gic --RS232接收数据信号; --RS232发送数据信号;); use ieee.std_logic_ un sig ned.all;

工程测试技术试题及答案

工程测试技术试题及答案Last revision on 21 December 2020

复习总结 一、概念题 1.测试过程中,若所测试的信号不随时间变化或变化非常缓慢,称这种测试称为静态 测试。如果所测试的信号随时间周期变化或变化很快,这种测试称为动态测试。 2.传感器是把被测量转换成易于变换、传输和处理的一种器件或装置。 3.按构成原理分类,电阻应变片、热敏电阻、压电晶片属物性型传感器。 4.按构成原理分类,电容传感器、自感型电感式传感器属结构型传感器。 5.为提高和改善传感器的技术性能,可采取以下技术措施:差动技术、平均技术以及 补偿与修正技术。 6.传感器的定度曲线(或标定曲线)与拟合直线之间的偏离程度称为传感器的线性 度。 7.传感器的灵敏度是指稳态时,输出变化量与输入变化量之间的比值。 8.对于一阶传感器系统,当其时间常数(或τ)越小,其频率响应特性越好。 9.激波管标定系统中,激波管的作用是一种动态标定设备,能产生阶跃压力信号输 出。 10.金属电阻应变片的规格一般以面积(或长×宽)和初始阻值表示。 11.用电阻应变片测量构件的变形,影响电阻应变片电阻变化的因素有:应变片的灵敏 度和初始阻值、被测构件的应变量、以及应变片沿构件的粘贴方向。(因为:△R=KεR,K为灵敏度,R为应变片初始阻值,ε被测构件的应变量) 12.将电阻丝绕成应变片后,由于存在横向效应,其灵敏系数一般会减小。 13.在电桥测量中,由于电桥接法不同,输出电压的灵敏度也不同,全桥接法可以得到 最大灵敏度输出。 14.应变片的温度误差补偿方法通常可分为:桥路补偿法、应变片自补偿法。 15.根据工作原理,变气隙型自感式传感器的灵敏度具有理论上的非线性。 16.电涡流接近开关结构简单,根据其工作原理,不可用来进行类似如玻璃瓶、塑料零 件以及水的液位的检测。 17.在差动式自感传感器中,若采用交流桥路为变换电路,常出现零点残余电压现象, 该现象使传感器灵敏度下降,灵敏阈值增大,非线性误差增大。

学生学习问题测试

学生学习问题测试题

测试1 性格·气质类型测试 下面60道题,认为:“很符合”的标记a,“比较符合”的标记b,“介于符合与不符合之间”的标记c,“比较不符合”的标记d,“完全不符合”的标记e。 1、做事力求稳妥,一般不做无把握的事。 2、遇到可气的事就怒不可遏,想把心里话全说出来才痛快。 3、宁可一个人干事,也不愿很多人在一起。 4、到一个新环境很快就能适应。 5、厌恶那些强烈的刺激,如尖叫、嗓音、危险镜头等。 6、和人争吵时,总是先发制人,喜欢挑剔别人。 7、喜欢安静的环境。 8、我善于和别人交往。 9、羡慕那种善于克制自己感情的人。 10、生活有规律,很少违反作息制度。 11、在多数情况下情绪是乐观的。 12、碰到陌生人觉得很拘束。 13、遇到令人气愤的事,能很好地自我克制。 14、做事总是有旺盛的精力。 15、遇到问题总是举棋不定,优柔寡断。 16、在人群中从不觉得过分拘束。 17、情绪高昂时,觉得干什么都有趣,情绪低落时,又觉得什么都没意思。 18、当注意力集中于一事物时,别的事很难使我分心。 19、理解问题总比别人快。 20、碰到危险情景,常有一种极度恐惧感。 21、对学习、工作怀有很高的热情。 22、能够长时间做枯燥、单调的工作。 23、符合兴趣的事情,干起来就劲头十足,否则就不想干。 24、一点小事情就能引起情绪波动。 25、讨厌做那种需要耐心、细致的工作。 26、与人交往不卑不亢。 27、喜欢参加热烈的活动。

28、爱看感情细腻、描写人物内心活动的文学作品。 29、工作学习时间长了,常常感到厌倦。 30、不喜欢长时间谈论一个问题,愿意实际动手干。 31、宁愿侃侃而谈,不愿窃窃私语。 32、别人总是说我闷闷不乐。 33、理解问题常常比别人慢些。 34、疲倦时只要短暂休息就能精神抖擞,重新投入工作。 35、心里有话宁愿自己想,不愿说出来。 36、认准一个目标就希望尽快实现,不达目的决不罢休。 37、学习、工作同样一段时间,常常比别人感到累。 38、做事有些莽撞,常常不考虑后果。 39、老师或他人讲授新知识、新技术时,总希望他将得慢些,多重复几遍。 40、能够很快忘记那些不愉快的事。 41、做作业或完成一件工作总比别人花更多时间。 42、喜欢运动量大的剧烈体育运动,或者参加各种文艺活动。 43、不能很快地把注意力从一件事转移到另一件事上去。 44、接受一个任务后,就希望把它迅速解决。 45、认为墨守陈规比冒风险强些。 46、能同时注意几件事物。 47、当我烦闷的时候,别人很难使我高兴起来。 48、爱看情节起伏跌宕、激动人心的小说。 49、对工作报认真严谨、始终如一的态度。 50、和周围人的关系总是相处不好。 51、喜欢复习学习过的知识,重复做能熟练做的工作。 52、希望做变化大、花样多的工作。 53、小时候会背的诗歌,我似乎比别人记得清楚。 54、别人说我“出语伤人”,可我并不觉得这样。 55、在体育活动中,常常因反应慢而落后。 56、反应敏捷,头脑机灵。 57、喜欢有条理而不甚麻烦的工作。

机械工程测试技术试题(含答案)

一、选择题 1、差动式变极距式电容传感器的灵敏度是变极距式传感器的____2__倍. 2、信号有多种类型,从分析域上看,经典的分析方法有__时域法_和__频域法_。 3、压电式传感器的转换原理是利用晶体材料的__压电效应____。 4、传感器的静态特性中,输出量的变化量与引起此变化的输入量的变化量之比称为___灵敏度___。 6、信息与信号二者间关系是___信息在信号之中___。 7、当两信号的互相关函数在t 0有峰值,表明其中一个信号和另一个信号时移t 0时,相关程度___最高__。 8、传感器的灵敏度越高,意味着传感器所能感知的___被测量__越小。 9、测试工作的任务主要是要从复杂的信号中提取(有用信号) 10、时域信号的时移,则频谱变化为( 相移 ) 11、 记录磁带快录慢放,放演信号的频谱带宽(变窄,幅值增高) 12、 用二阶系统作测量装置时,为获得较宽的工作频率范围,则系统的阻尼比应(接近1/√2 ) 13、 对二阶系统输入信号x(t)=A1sinw1t+A2sinw2t,则系统稳态输出方程的通式为(A1'sin (w1t+φ'1)+A2'sin (w2t+φ2')) 14、 概率密度函数提供了随机信号(沿幅值域分布)的信息 15、 在测量位移的传感器中,符合非接触测量,而且不受油污等介质影响的是(电涡流式) 16、 只使在fe 1~fe 2间频率的信号通过,应采用(带通)滤波器 17、 在选用振子时,除了使阻尼比接近0.7外,应使被测正弦信号的最高频率fm(≤(0.5-0.6) )振动子的固有频率fn 18、 为使电缆的长度不影响压电式传感器的灵敏度,应选用(电荷)放大器。 19、 当τ→∞时,信号x (t )的自相关函数Rx (τ)呈周期性变化,说明该信号(含有周期成份)。 20、 正弦信号的自相关函数,使原有的相位信息(丢失) 21、 不能用确定的数学公式表达的信号是(随机)信号。 22、 非线性度是表示定度曲线(偏离其拟合直线)的程度。 23、 自相关函数一定是(偶)函数。 24、 为了能从调幅波中很好地恢复出原被测信号,通常用(相敏检波器)做为解调器。 25、 采样时为了不产生频谱混叠,采样频率必须大于信号最高频率的(2 )倍 26、 压电式传感器前置放大器的主要作用是(把传感器的高阻抗输出变换为低阻抗输出)。 27、在电桥测量电路中,由于电桥接法不同,输出的电压灵敏度也不同,___全桥___接法可以获得最大的输出。 28、压电传感器所使用的前置放大器在电路中起着很重要的作用,以下说法错误的是___将传感器的低阻抗输入变成高阻抗输出___。 29、幅值调制装置实质是一个乘法器 30、理想滤波器在通带内的幅频特性为常数 31.变极距型电容传感器的输出与输入,成(非线性)关系。 32.如果窗函数频谱的主瓣峰值相对于左右旁瓣峰值越大,则该窗函数的泄漏误差(越小)。 33.不能用涡流式传感器进行测量的是(非金属材料)。 34.设时域信号x(t)的频谱为X(f),则时域信号(C )的频谱为X(f +f0)。 A . )(0t t x - B. )(0t t x + C. t f j e t x 02)(π- D. t f j e t x 0 2)(π 35.压电式传感器后面的放大器的主要功能为(阻抗变换和信号放大)。 36.一个相邻双臂工作的测力电桥,如果将两工作臂的一个应变片均改为两个应变片串联,则电桥的输 出电压(加大两倍) 二、判断题

串口通信FPGA实现

FPGA设计与应用 串口通信实验报告 班级:1105103 姓名:苏林效 学号:1110510321 日期:2014年10月29日

实验性质:验证性实验类型:必做 开课单位:电信院学时:2学时 一、实验目的 1、了解串口通信的基本原理; 2、掌握锁相环的基本原理和使用方法; 3、掌握起始位和停止位的含义及实现方法; 4、掌握VHDL状态机的基本使用方法; 5、掌握基本的接口设计和调试技巧; 二、实验准备 2.1 串口通信原理(1分) 串口通信是以字节为单位,按位传输数据和接收数据的。 先看一下发送数据:串行线缆的两端事先约定好串行传输的参数(传输速度、传输格式等),之后进行传输,①当没有数据传输的时候,发送端向数据线上发送“1”;②当要传输数据时,发送端先发送一个“0”来表示要传输数据了,这样当接收端检测到“0”便可以知道有数据到来了;③开始传输后,数据以约定的速度和格式传输;④每次传输完成一个字节之后,都在其后发送一个停止位“1”。这样,发送数据就结束了。 再来看接收数据,初始状态是等待状态,接收的一直是“1”,当检测到0时进入检验状态,在检验状态下如果再检测到0(一般采用过采样)则进入接收数据状态,当接收完8位比特数后判断是否有停止位,如果有则此字节接收结束,重新进入等待状态准备接受下一字节。 2.2 锁相环的基本原理(1分) 锁相环是以锁定输入载波信号的相位为目标的一种载波环实现形式。它由三部分组成:鉴相器(PD)、环路滤波器(LPF)和压控振荡器(VCO)。如上图。 锁相环的工作原理:压控振荡器的输出经过采集并分频,后与基准信号同时

输入鉴相器。鉴相器通过比较上述两个信号的相位差,输出结果通过环路滤波器,滤除噪声和高频分量,然后输出一个直流脉冲电压,用它来控制VCO ,使它的频率改变,使()lim 0c p t θ=。经过较短时间后,VCO 的输出稳定于某一值。环路一旦进入锁定状态后,压控振荡器的输出信号与环路的输入信号(参考信号)相位时刻保持一致。 三、代码及测试 3.1程序及分析(2分) 顶层原理图如上所示,主要包括三个模块,锁相环(输出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);

最新中学生提高自制力的10种招数教学文案

中学生提高自制力的10种招数 自制力是指一个人的自我控制能力,是一个人顺利成才的必备素质。自制力弱的人意志薄弱,做事缺乏恒心,往往虎头蛇尾,而且不能控制负面情绪,好冲动,容易铸成大错。提高自制力对于正在成长的青少年来说是必须的。以下10招可以帮助青少年提高自我控制力。 方法1:协议监督 [案例]刘毅,初二男生,学习成绩中等,大脑聪明,易受外界不良诱惑影响,好冲动,经常打架。刘毅在学校里、家里都写了不少保证书,由于自制力弱,一份保证书管不到三天。后来,班主任想了一个办法,让刘毅和班长王华结对子。班长学习成绩好,人品不错,刘毅也很敬重他。刘毅和班长立下协议,他先向班长交押金贰百元,如果在两周内刘毅有一次打架行为,贰百元就充当班费。协议一式三份,两人各保留一份,班主任一份。每当刘毅有打架的苗头时,班长就告诉他还有协议放在班主任那儿,刘毅打架的念头刚出现就被班长的提醒所打消。 [分析]协议监督是个好办法,由自己身边的人及时向自己施加压力,外在的压力有利于提高自我控制力,但所请的监督方必须是认真负责而且信得过的人。 方法2:远离诱惑源 [案例]汪良,初三男生,喜欢上网,一上就是半天,把作业放在一边。初三第一次月考,学习成绩大幅下滑。汪良提出让父母把电脑搬出书房。汪良做作业时注意力集中了,诱惑源没了,再也不会身在作业心在网络了。 [分析]对于有不良嗜好的人切断诱惑源是个很好的办法,釜底抽薪,撤去分心物,能集中精力做自己要做的事。

方法3:负面后果联想法 [案例]王岚,初三女生,最近邻班有一个帅哥向她“放电”。王岚也很喜欢这个“帅哥”,帅哥写信邀她在学校操场见面。王岚本想去,但想到如果被同学看见就会传到老师、家长那里,后果不堪设想。后来帅哥又多次“示爱”,遭到王岚的严辞拒绝。 [分析]王岚用负面后果联想法阻止内心的冲动,成功抵制了外界的不良诱惑,避免了陷入早恋的泥潭。负面后果联想法是当事人联想到在某件事上如果缺乏自制力所导致的严重后果。 方法4:自我暗示 [案例]汪群,不喜欢写作文,以前每次写作文只草草写两段,不能坚持写完。后来,他在语文老师的指导下对自己进行积极的暗示。每当写作文想中途放弃时,他就暗示自己“我能写好大家满意的作文”、“我是不轻言放弃的强者”,他又很快振作精神坚持写完作文。 [分析]积极的自我暗示有利于自己改变过去消极的自我意象,以令人奋进的积极形象要求自己,激发出自己向上的力量。 方法5:目标分解法 [案例]黄浩,初三学生,害怕英语,单词记得很少,每次考试英语“跛腿”。老师找他谈话多次,家长也很着急。黄浩也想狠抓一把,但一想到几册课本二千多个单词和短语,心里又在打退堂鼓。后来,爸爸告诉他将任务分解,每天记10个单词,早上5个,中午2个,晚上3个。黄浩每天很轻松地完成任务,英语成绩有了很大的突破。 [分析]目标分解法能将繁重的学习任务分解到每天,化大为小,能消除自己的畏难情绪。如不分解,学习任务就像大山一样让人望而生畏,难以坚持。从小到大,由易到难,越学越有信心。

FPGA串口通信汇总

FPGA实验报告 目录 FPGA实验报告 (1) 目录 (1)

基于VHDL的串口通信实现设计 (3) 摘要 (3) 正文 (3) 1.研究背景知识 (3) 1.1串口简介 (3) 1.2串口通信参数 (3) 2.系统整体设计 (5) 2.1 系统框图 (5) 2.2原理图 (5) 2.3管脚介绍: (6) 3. 系统模块设计 (6) 3.1分频模块 (6) 3.11流程图 (6) 3.12程序 (7) 3.2接收模块 (8) 3.21流程图 (8) 3.22程序 (9) 3.3发送模块 (10) 3.31流程图 (10) 3.32程序 (11) 4. 系统调试 (12) 4.1 时序调试 (12) 4.2硬件调试 (13) 5.总结 (14)

基于VHDL的串口通信实现设计 摘要 串口是计算机上一种非常通用设备通信的协议,其特点是通信线路简单,成本低,特别适用于远距离通信,因此有较为广泛的应用。为了深入了解串口,本课程设计基于VHDL语言,利用FPGA开发板实现了板间串口通信。在程序设计中,考虑到串口波特率、数据格式等参数,共采用了四个模块:分频模块(即波特率产生模块),接受模块,发送模块,显示模块。通过软件和开发板调试,实现了板和串口调试助手收发数据,软件改变波特率等参数,并在数码管显示的功能。 关键词:串口VHDL FPGA 分频接收发送显示 正文 1.研究背景知识 1.1串口简介 串行接口Serial Interface是指数据一位一位地顺序传送,其特点是通信线路简单,只要一对传输线就可以实现双向通信(可以直接利用电话线作为传输线),从而大大降低了成本,特别适用于远距离通信,但传送速度较慢。 串口通信的两种最基本的方式:同步串行通信方式和异步串行通信方式。 1.2串口通信参数 双方为了可以进行通信,必须要遵守一定的通信规则,这个共同的规则就是通信端口的初始化。通信端口的初始化有以下几项必须设置: 1.数据的传输速率 传输双方通过传输线的电压改变来交换数据,但传输线的电压改变的速度必须和接收端的接收速度保持一致,RS-232通常用于异步传输,即双方并没有一个可参考的同步时钟作为基准。由于没有一个参考时钟,双方所发送的高低电位

串行通信实验报告材料

串行通信实验报告 班级姓名学号日期 一、实验目的: 1、掌握单片机串行口工作方式的程序设计,及简易三线式通讯的方法。 2、了解实现串行通讯的硬环境、数据格式的协议、数据交换的协议。 3、学习串口通讯的程序编写方法。 二、实验要求 1.单机自发自收实验:实现自发自收。编写相应程序,通过发光二极管观察收发状态。 2.利用单片机串行口,实现两个实验台之间的串行通讯。其中一个实验台作为发送方,另一侧为接收方。 三、实验说明 通讯双方的RXD、TXD信号本应经过电平转换后再行交叉连接,本实验中为减少连线可将电平转换电路略去,而将双方的RXD、TXD直接交叉连接。也可以将本机的TXD接到RXD上。 连线方法:在第一个实验中将一台实验箱的RXD和TXD相连,用P1.0连接发光二极管。波特率定为600,SMOD=0。 在第二个实验中,将两台实验箱的RXD和TXD交叉相连。编写收发程序,一台实验箱作为发送方,另一台作为接收方,编写程序,从内部数据存储器20H~3FH单元中共32个数据,采用方式1串行发送出去,波特率设为600。通过运行程序观察存储单元内数值的变化。 四、程序 甲方发送程序如下: ORG 0000H LJMP MAIN ORG 0023H LJMP COM_INT ORG 1000H MAIN: MOV SP,#53H MOV 78H,#20H

MOV 77H,00H MOV 76H,20H MOV 75H,40H ACALL TRANS HERE: SJMP HERE TRANS: MOV TMOD,#20H MOV TH1,#0F3H MOV TL1,#0F3H MOV PCON,#80H SETB TR1 MOV SCON,#40H MOV IE,#00H CLR F0 MOV SBUF,78H WAIT1: JNB TI,WAIT1 CLR TI MOV SBUF,77H WAIT2: JNB TI,WAIT2 CLR TI MOV SBUF,76H WAIT3: JNB TI,WAIT3 CLR TI

测试技术—考试题库及答案

------单选 使用最小二乘法时,偏差的平方和最小意味着拟合直线与整个实验数据()收藏 A. 偏离度大 B. 偏离度最小 C. 不相关 D. 以上3个都不对 回答错误!正确答案: B 相敏检波的特点是( ) 收藏 A. 能够知道被测信号的幅值和极性 B. 不知道被测信号的幅值,能够知道被测信号的极性 C. 能够知道被测信号的幅值,不知道被测信号的极性 D. 以上都不正确 回答错误!正确答案: A 单边谱的幅值谱图高度为双边谱的()倍。 收藏 A. 1倍 B. 3倍 C. 2倍 D. 4倍 回答错误!正确答案: C 时域信号的时移,则其频谱变化为()。 收藏 A. 压缩 B. 扩展 C. 不变 D. 相移

一选频装置,其幅频特性在f1~f2区间急剧衰减(f2>f1),在0~f1和f2~∞之间近于平直,这是()滤波器 收藏 A. 带通 B. 带阻 C. 高通 D. 低通 回答错误!正确答案: B 周期信号各次谐波的频率只能是基波频率的()倍。 收藏 A. 奇数 B. 偶数 C. 复数 D. 整数 回答错误!正确答案: D 在测量位移的传感器中,符合非接触测量,而且不受油污等介质影响的是( )传感器。 收藏 A. 电阻式 B. 电涡流式 C. 电容式 D. 压电式 回答错误!正确答案: B 差动式变极距式电容传感器的灵敏度是变极距式传感器的( )倍。 收藏 A. 3 B. 2 C. 1 D. 2.5 回答错误!正确答案: B

收藏 A. 反比 B. 平方 C. 非线性 D. 线性 回答错误!正确答案: D 各态历经随机过程必须是()。 收藏 A. 连续的 B. 平稳随机过程 C. 非周期的 D. 周期的 回答错误!正确答案: B 下列对负载效应的表达错误的是() 收藏 A. 测量环节作为被测量环节的负载,两环节将保持原来的传递函数 B. 测量环节作为被测量环节的负载,接到测试系统时,连接点的状态将发生改变 C. 负载效应指,测量环节与被测量环节相连时对测量结果的影响 D. 测量环节作为被测量环节的负载,整个测试系统传输特性将发生变化 回答错误!正确答案: A 压电传感器采用并联接法时,两晶片负极集中在( )上 收藏 A. 上极板 B. 下极板 C. 中间极板 D. 侧极板 回答错误!正确答案: C 一阶测试系统、二阶测试系统的瞬态响应之间最重要的差别是()

FPGA与单片机实现数据RS232串口通信的设计

FPGA与单片机实现数据RS232串口通信 的设计 发布时间:2010-9-2 发布人:21世纪电子网 摘要:本文针对由FPGA构成的高速数据采集系统数据处理能力弱的问题,提出FPGA与单片机实现数据串行通信的解决方案。在通信过程中完全遵守RS232协议,具有较强的通用性和推广价值。 1 前言 现场可编程逻辑器件(FPGA)在高速采集系统中的应用越来越广,由于FPGA对采集到的数据的处理能力比较差,故需要将其采集到的数据送到其他CPU系统来实现数据的处理功能,这就使FPGA系统与其他CPU系统之间的数据通信提到日程上,得到人们的急切关注。本文介绍利用VHDL语言实现 FPGA与单片机的串口异步通信电路。 整个设计采用模块化的设计思想,可分为四个模块:FPGA数据发送模块,FPGA 波特率发生控制模块,FPGA总体接口模块以及单片机数据接收模块。本文着重对FPGA数据发送模块实现进行说明。 2 FPGA数据发送模块的设计 根据RS232 异步串行通信来的帧格式,在FPGA发送模块中采用的每一帧格式为:1位开始位 8位数据位 1位奇校验位 1位停止位,波特率为2400。本系统设计的是将一个16位的数据封装成高位帧和低位帧两个帧进行发送,先发送低位帧,再发送高位帧,在传输数据时,加上文件头和数据长度,文件头用555555来表示,只有单片机收到555555时,才将下面传输的数据长度和数据位进行接收,并进行奇校验位的检验,正确就对收到的数据进行存储处理功能,数据长度可以根据需要任意改变。由设置的波特率可以算出分频系数,具体算法为分频系数X=CLK/(BOUND*2)。可由此式算出所需的任意波特率。下面是实现上述功能的VHDL源程序。 Library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity atel2_bin is port( txclk: in std_logic; --2400Hz的波特率时钟 reset: in std_logic; --复位信号 din: in std_logic_vector(15 downto 0); --发送的数据 start: in std_logic; --允许传输信号 sout: out std_logic --串行输出端口 ); end atel2_bin; architecture behav of atel2_bin is signal thr,len: std_logic_vector(15 downto 0); signal txcnt_r: std_logic_vector(2 downto 0); signal sout1: std_logic;

基于FPGA的串口控制器设计

基于FPGA的串口控制器设计 简介 使用硬件描述语言 (HDL) 设计和开发验证FPGA的成为当前的主流因素。使用行为级描述不只增加了产品的设计效率,也在设计中有独特的验证方式。目前最流行的HDL语言为Verilog 和 VHDL。这篇文章将会举例说明用 Verilog语言的设计和验证数字异步串行收发器UART。 UART介绍 通用异步串行收发器UART中有二个独立的VHDL模块。一个模块实现发射功能, 当另一个实现接收功能,发射和接收功能模块在顶端设计时组合到一起使用,接收和发射的组合是通信通道所必需的。数据写入发射器,从接收器读出,所有的数据是以二进制8字节的信号通过CPU接口。在顶端设计时,地址有发射器映射,而且接收器通道能容易地建立从儿进入接口,两者工用一个称为mclkx 16主控时钟,在每个模块中 mclkx 16 被分成独立的波特率时钟。 UART的功能概况 UART的基本功能概况见下表. 在左边显示传输保持记录,移位记录,传输控制时钟,全部集中在发射机的txmit端。在右边的是显示接收移位寄存器, 接收记录和控制逻辑时钟,所有都包含在接收模块的rxcver端,这两个模组都单独的投入与产出,大部分的控制线,只有双向数据总线, 主时钟和复位线共享的模块。

顶层UART系统的I/O功能描述 UART的标准数据格式 图3显示了UART的串行数据格式,串行数据包含在帧8个数据字节,以及编码信息比特,在连续传输线路高通,在传输初始化时开始低一点.,接下来的低一点开始到8比特的数据信息, 低位对于后边高位有重要的作用。然后后边的8 bits数据进行奇偶校验 ,反馈8位数据的结果。 UART时序图 下面显示怎么将从寄存器里出来的数据写给移位寄存器,并在上升沿速率时钟时,转向tx输出。 发送时间如下表,如何得到数据从rx传输到接收移位寄存器然后存储。

相关文档
最新文档