- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
一.设计要求:
掌握 FPGA 的设计与使用。
基于 FPGA 实现与 PC 机的串口通信。
二.设计步骤:
1.用 VHDL 语言设计逻辑电路,再通过 QUARTUS II 9.1 软件,将各个模块的电 路封装成器件,在顶层设计中通过连线,完成整个系统的设计。
串行通信即串行数据传输,实现 FPGA 与 PC 的串行通信在实际中,特别是在 FPGA 的调试 中有着很重要的应用。调试过程一般是先进行软件编程仿真,然后将程序下载到芯片中验 证设计的正确性,目前还没有更好的工具可以在下载后实时地对 FPGA 的工作情况和数据 进行分析。通过串行通信,可以向 FPGA 发控制命令让其执行相应的操作,同时把需要的 数据通过串口发到 PC 上进行相应的数据处理和分析,以此来判断 FPGA 是否按设计要求工 作。这样给 FPGA 的调试带来了很大方便,在不需要 DSP 等其他额外的硬件条件下,只通 过串口就可以完成对 FPGA 的调试。本文采用 QuartusⅡ3.0 开发平台,使用 Altera 公司的 FPGA,设计实现了与 PC 的串行通信。
总体设计
主要设计思想:PC 向串口发送命令,FPGA 通过判断接收的控制字执行相应的操作,总体 框图如图 1 所示。
图 1 总体框图
设计包括三部分:1、通过向 I/O 端口发送高低电平以达到控制外部硬件的要求。2、完成 芯片内部逻辑的变化。3、将需要的数据先存起来(一般采用内部或外部 FIFO),然后通过 串口将数据发送到 PC,PC 将接收的数据进行处理和分析。串口采用标准的 RS-232 协议, 主要参数的选择:波特率 28800bit/s、8 位有效位、无奇偶校验位、1 位停止位。
控制模块
主要实现的功能是:判断从 PC 接收的数据,根据预先设计的逻辑进行相应的状态转换。 例如:给端口预置一个状态;送开始发送的标志位,送准备发送的数据;给 DDS 送配置信 号,控制 FIFO 的读写。程序中状态机设计如图 3 所示。
图 3 状态机变换
设计中需要注意的问题
波特率的选择对于串口通信是很重要的,波特率不应太大,这样数据才会更稳定。整个发 送接收过程中起始位的判别和发送是数据传输的前提。为了避免误码的产生,在 FPGA 设 计中的串行输入和输出端口都应该加上一个数据锁存器。
仿真结果
clk 是时钟信号(57600 bit/s);start_xmit 是开始发送标志位;sin 是串行输入;datain 是并 行输出;read_bit 是接收结束标志位;xmit_bit 是发送结束标志位;sout 是串行输出; dataout 是并行输出;rcv_bit 是接收位数寄存器。发送接收模块主要完成把从 sin 端口接 收的串行数据变为并行数据送给 dataout;把并行数据 datain 变成串行数据通过 sout 端口 串行发送。
分频模块
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_arith.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity Clk_DIV is
port (clk : in std_logic;
CLK_O : out std_logic );
end Clk_DIV;
architecture Clk_DIV_arch of Clk_DIV is
signal clk1,clk2 : std_logic;
signal s1,s2 : integer range 0 to 53;
begin
process(clk)
begin
if rising_edge(clk) then
if s1 53 then
s1= s1+1;
else
s1=0;
end if;
if s1 28 then
clk1 = 1;
else
clk1 = 0;
end if;
end if;
end process;
process(clk)
begin
if falling_edge(clk) then
if s2 53 then
s2= s2+1;
else
s2=0;
end if;
if s2 28 then
clk2 = 1;
else
clk2 = 0;
end if;
end if;
end process;
CLK_O =clk1 or clk2;
end Clk_DIV_arch;
设计中需要将 3.6864MHz 的时钟进行 64 分频变为 57600 波特作为其他模块的时钟基准。 具体实现时采用一个 6 位计数器,将计数器的溢出作为时钟的输出即可实现整数分频。
发送接收模块
此模块是整个设计的核心部分。设计流程如图 2 所示。
图 2
您可能关注的文档
最近下载
- 高中数学切线缩放解题策略上课讲义.pdf VIP
- 2022-2023学年四川省成都市武侯区西川中学九年级(上)期中数学试卷.docx VIP
- 北京市2018年中考英语真题(含答案).pdf VIP
- 2020-2021学年四川省成都市武侯区西川中学九年级(上)第四次月考数学试卷.doc VIP
- XX学校关于违规征订推荐教辅教材管理制度.docx VIP
- 从居室墓和石雕像看兴隆洼文化的祖先崇拜.pdf VIP
- 综合与实践 设计学校田径运动会比赛场地课件(共17张PPT) 2024-2025学年人教版数学七年级上册.pptx VIP
- 高考满分作文议论文范文10篇.pdf VIP
- 江西农村信用社农商银行.doc VIP
- 小学学校规范教材和教辅资料征订管理暂行办法.docx VIP
文档评论(0)