RS-232串口通信设计(3)

2019-06-11 17:01

当小于25的时候赋值为1,其余为0,使得将50MHZ处理为1MHZ。当取值大于或 等于50时复位为0。从而达到分频的目的。 程序2:

library ieee;

use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity cnt is

port(clk:in std_logic; freq1:out std_logic; freq488:out std_logic; freq1953:out std_logic; freq7812:out std_logic; freq31250:out std_logic; freq125k:out std_logic; freq500k:out std_logic); end cnt;

architecture behv of cnt is

signal temp:std_logic_vector(19 downto 0); begin

process(clk) begin

if clk 'event and clk='1' then

if temp=\ temp<=\ else

temp<=temp+1; end if; end if; end process;

freq1<=temp(19); freq488<=temp(10); freq1953<=temp(8); freq7812<=temp(6); freq31250<=temp(4); freq125k<=temp(2); freq500k<=temp(0); end behv;

分析:程序2的设计思路同样是使用计数,但和程序1的计数不完全相同,数由16进 制表示,4为2进制组成1位16进制,所以从第0位开始可以计数2位,第一位 可以计数4位,第二位可以计数8位,依次可以得出计数量为2的n+1次方个数, 从而达到同时计数多个的目的从而产生多个时钟信号。 (1-4)模块四分析:

分析:显示模块由两部分组成,74138的表面作用是译码将输入的sel信号翻译出来并选中制定的数 码管。其实质作用是由输入的信号(0-7计数为8的计数信号输入),来控制数码管的片选。 而display的作用是来实现片选,将RS232输出的并行信号的两部分(每部分4位组成一个 16进制数)进行处理来实现段选。

分析:上图为display模块的细节图。rxd中的信号分为两组输入,分别进入muxer 的第0组和第1 组。其余的组全部拉低,达到出去最低两位显示,其余为显示全0的目的,cnt8为0-7的计 数,作用是控制muxer进入led程序的顺序,而led是为了实现段选,点亮数码管的特定位来 显示输入数值。 程序1.

library ieee;

use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity cnt8 is

port(clk:in std_logic;

q:out std_logic_vector(2 downto 0)); end cnt8;

architecture behv of cnt8 is

signal temp:std_logic_vector(2 downto 0); begin

process(clk) begin

if clk 'event and clk='1' then if temp=\ temp<=\ else

temp<=temp+1; end if; end if; end process; q<=temp; end behv;

分析:cnt8的作用为0-7的8位计数,为后面模块提供计数顺序。

程序2.

library ieee;

use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity led is

port(din:in std_logic_vector(3 downto 0); dout:out std_logic_vector(6 downto 0)); end led;

architecture behv of led is begin

process(din) begin

case din is

when \ when \ when \ when \ when \ when \ when \ when \ when \ when \ when \ when \ when \ when \ when \ when \ when others=>dout<=\ end case;

end process; end behv;

分析:程序led是完成段显,将输入的数值0-15翻译成对应的数码管编码。 (1-5)接收模块

分析:程序rsSedn作为接受模块,用于将232中发送的数据再次回写到到串口助手的接收端内!要是程序完全正常的话发送什么就会在接收窗口接收到什么。

3.3问题:

如何真正的实现发送和接受同步,并且发送的和接收的完全一样?发送和接收波特率怎么弄?

答:接收和显示的已经做出来了,但是发送的

4.总结:

参考文献

[1] 通信与电子系统实验指导书.武汉:华中科技大学武昌分校. [2] 潘松.EDA技术与VHDL.北京:清华大学出版社,2009.

[3] 朱运利.EDA技术应用(第二版).北京:电子工业出版社,2007. [4] 王行.EDA技术入门与提高.西安:西安电子科技大学出版社,2009.

[5] 李莉.电子设计自动化(EDA).北京:中国电力出版社,2009.

附录 程序清单:

程序1:

library ieee;

use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity rs232 is

port(sysclk: in std_logic;


RS-232串口通信设计(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:行测经验谈

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: