Verilog RS232串口模块实验报告

发布 2019-07-23 05:31:37 阅读 7253

1 设计概述。

实验功能:实现rs232的双工通信。

实验环境:1)硬件环境:pc机一台、ml507pfga开发套件;2)软件环境:

开发软件ise14.5、**编写软件notepad++、**软件modelsim、调试软件chipscope、串口调试工具。

2 设计原理。

2.1 串行接口rs232工作原理。

串口用来连接fpga和pc机,rs-232允许全双工通信,即计算机在接收数据的同时可以发送数据。串口按位(bit)发送和接收字节。通常以8位数据为1组,先发送最低有效位,最后发送最高有效位。

尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。

通信使用3根线完成:(1)地线,(2)发送,(3)接收。由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。

其他线用于握手,但不是必须的。数据的传输没有时钟信号,接收端必须采取某种方式,使之与接收数据同步。

1)串行线缆的两端先约定好串行传输的参数(传输速度、传输格式等);

2)当没有数据传输的时候,发送端向数据线上发送"1";

3)每传输一个字节之前,发送端先发送一个"0"来表示传输已经开始,这样接收端便可以知道有数据到来了;

图1 数据帧结构。

4)开始传输后,数据以约定的速度和格式传输,所以接收端可以与之同步;

5)在串口总线上‘高电平’是默认的状态,当一帧数据开始传输必须先拉低电平,这就是起始位,起始位之后是8位数据位,最后是校验位和停止位(可不加校验位)。传输完成一个字节之后,都在其后发送一个停止位("1")。图1)

2.2 波特率发生器。

波特率是串口传输的传输速度;在微观上就是一个位的周期。常用的波特率有9600bps和115200bps。“9600bps”表示每秒可以传输9600位。

本次实验我所选用的传输速率为9600bps。由于我们的fpga通常运行在远高于9600hz的频率上(100mhz),因此需要分频产生接近9600hz的时钟信号。若fpga时钟为100mhz,则需要100m/9600=10416个时钟周期置位一次就可以得到9600hz的时钟。

3 模块组成。

3.1接收模块。

接收模块示意图(图2)

图2 接收模块示意图。

串口接收包括三个模块:电平检测模块,用来检测数据开始,当检测到输入信号rx_pin_in有下降沿时,可以判断信号到来,h2l_sig信号输出为高电平通知接收控制模块准备接收数据;波特率定时模块,用来产生波特率(9600bps);接收控制模块,用来控制接收开始和结束。rx_en_sig为高电平时,若电平检测模块检测到有数据输入,则发出h2l_sig高电平信号,接收控制模块输出count_sig信号,波特率定时模块开始计数。

为了确保采集到的数据的准确性,数据采集都是在每位数据的中间进行着(图3)。为使采集信号出现在数据位中间,决定每次计数到5208产生一个采集信号bps_clk,持续一个时钟周期,计数到10416时计数器清零并重新计数,这样采集信号周期不变,准确度提高。

图3 数据定时采集示意图。

接收控制模块将8位数据位并行输出,输出rx_done_sig信号表示一帧数据结束,发送模块可以接收来自rx_data的数据。

3.1.1 detect_

detect_这个功能模块是为了检查电平由高变低。当检测到电平又高变低,在第40行就会输出高脉冲。

3.1.2 rx_bps_

波特率定时模块,用来产生波特率,其原理同计数器。当rx_control_拉高count_sig, bps_经bps_clk对 rx_control_ 产生定时。

3.1.3 rx_control_

rx_control_是核心控制模块,用来控制接收开始和结束。对串口的配置主要是1帧11位的数据,重视八位数据位,无视起始位,校验位和结束位。当rx_en_sig拉高,这个模块就开始工作,它将采集来自rx_pin_in的数据,当完成一帧数据接收的时候,就会产生一个高脉冲给 rx_done_sig。

44~62行是rx_control_的核心控制功能。当rx_control_模块被使能,该模块就会处于就绪状态,一旦detect_检查到又高变低的电平变化(47行),会使步骤i进入第0位采集,然而iscount 标志寄存器同时也会被设置为逻辑1,rx_bps_ 便会开始产生波特率的定时。

3.1.4 rx_

rx_是一个组合模块,主要是包含detect_ ,bps_和 rx_control_个功能模块,和1个组合模块。完成对三个模块的例化及信号传递。

3.2 发送模块。

发送模块示意图(图4)

图4 发送模块示意图。

发送模块包括波特率定时模块,当tx_en_sig低电平时不工作,高电平时开始计数,然后产生一个高脉冲经bps_clk输出给发送控制模块;发送控制模块在tx_en_sig高电平时,每收到一个bps_clk,将tx_data的数据,由tx_pin_out输出。当一帧数据发送完毕后,产生一个tx_done_sig的高脉冲(图5)。

图5 数据定时发送示意图。

3.2.1 tx_bps_

tx_bps_同样是作为“定时”的功能。当tx_en_sig拉低电平的时候,它是处于随眠的状态。一旦tx_en_sig拉高电平,那么tx_bps_就开始计数。

然后定时产生一个高脉冲经bps_clk给tx_control_程序与rx_bps_基本相同。

3.2.2 tx_control_

tx_control_控制模块是最为中心的一部分,当tx_en_sig拉高电平,同时间tx_bps_也会开始计数。tx_control_将tx_data的值,按tx_bps_产生的定时,有节奏的往tx_pin_out发送。当一帧数据发送完毕后,就产生一个tx_done_sig的高脉冲。

3.2.3 tx_

4 功能**。

4.1 接收模块**。

4.1.1 接收模块验证程序。

增加一个control_模块,一开始control_会拉高 rx_en_sig使能rx_当有一阵数据经rx_pin_in传入,rx_就会接收然后将输出输出致rx_data , 再产生一个高脉冲给rx_done_sig。当control_ 接收到rx_done_sig的高脉冲,就会将rx_data的“前四位”输出致4位led资源。rx_module_为一组合模块,完成对control_和rx_的例化。

tb_rx_为测试文件。

1)control_

一开始的时候(36行)就将isen设置为逻辑1, 这个标志寄存器在38行驱动着 rx_en_sig,即此时的rx_已经进入就绪状态,control_等待着 rx_done_sig的通知(34行)。一旦一帧数据接收完毕,rx_done_sig就会产生高脉冲, 然后rdata被赋予rx_data的值,同时isen被设置为逻辑0(35行)。在下一瞬间, control_再一次设置isen为逻辑1,做好接收下一组数据的准备。

2)rx_module_略)

3)tb_rx_

测试文件输出的数据为“1111_1111”。

4.1.2 modelsim的**。

**结果(图6)

图6 接收模块验证**结果。

可以看出,该程序能够正确判断数据帧的起始位和终止位,正确接收了数据帧“1111_1111”,并将高四位赋给了number_data,来控制四个led灯。

4.2 发送模块**。

4.2.1 发送模块验证程序。

增加一个control_模块,主要是每秒往tx_发送0x31的数据。一开始control_往tx_data输出数据,然后拉高tx_done_sig使 tx_开始工作。当 tx_ 发往一帧数据以后,就会对 tx_done_sig 产生一个高脉冲,以示发送完毕。

tx_module_为一组合模块,完成对control_和tx_的例化。tb_tx_为测试文件。

1)control_

第28行是1秒的定义常量,在30~36行是1秒的定时器。control_主要是每秒发送0x31的数据,也就是每秒设置一次 isen标志寄存器。当isen被设置后,tx_就会开始工作,发完一帧数据位tx_done_sig会产生高脉冲。

这使得control_会重新赋值rdata寄存器,然后复位isen标志寄存器。直到下一秒的到来,isen标志寄存器会再一次被设置。

2)tx_略)

3)tb_tx_

4.2.2实验**。

为了便于**,将常量t1s=25’d19_999。**结果(图7)

图7 发送模块验证**结果。

可以看出,tx_pin_out正确发送起始位“0”,数据位“1000_1100”,终止位“1”。

5 总结。

2 23答题纸

滕西中学九年级语文下学期检测练习卷2.23答题纸。一 积累运用 31分 1 2 3 4 5 6.每个2分 7.3分 1 上联 下联2 上联 下联 8 默写 8分 9 8分 1 2分。2 4分。3 2分。二 阅读 一 共4分 10 2分 1的景象。2的景象。11 2分 二 共12分 12 解释下列句中...

铁路7 23安全反思

铁路安全大检查反思材料。为认真贯彻落实铁道部,8.4 全路运输安全电视 会议精神,以 吸取教训 振奋精神 转变作风 攻坚克难 为主要内容的大反思。引起了我们在安全工作中的思考和反思。铁路是最讲安全的,把安全放在首位是第一要务,是压倒一切的生命线。可 7.23 后让我们应该想到了什么,还应该认真做什么...

09 11 23法制讲座

法制教育讲座简讯。为了进一步强化师生遵纪守法意识,切实做好预防青少年犯罪的工作,使学生更好地做到知法守法,全面学习法制知识,2009年11月23日下午,我校特邀南明区法律援助中心 到阶梯教室为同学们进行了一场法制教育讲座,学校初一年级一至六班的同学及班主任 方芳副校长及思教处老师聆听了这次报告。援助...