依据现场可编程门阵列FPGA的体系开发能够广泛运用于各行各业,ASIC规划、通讯、操控、电力电子等。其主要长处有:规划周期短、功耗低,可完结更高集成度的数字体系和嵌入式体系等。用户可对FPGA内部的逻辑模块和I/O模块从头进行装备,以完结数字逻辑电路以及依据FPGA的SRAM、查找表(LUT)等。FPGA还具有静态可重复编程和动态在体系重构的特性,使得硬件的功用能够像软件相同经过编程来修正,然后进步规划的牢靠性、稳定性和灵活性。传统的规划中,FPGA的功用仅局限于集成电路的运用和验证,但是跟着电子技术的迅猛发展,集成度更高,功耗更低,依据FPGA的电路规划将发挥出更大的优势,使得在一片FPGA中完结一个齐备的数字处理体系成为可能[1-3]。本文提出的依据FPGA的串行通讯操控体系的规划与完结,是在Altera公司的FPGA Cyclone II芯片EP2C5的基础上完结的,运用VHDL言语编程,在Quartus II软件上进行编译、仿真,终究在FPGA开发板上成功完结下载和调试验证。
1 串行通讯操控体系的根本原理
根本的通讯方法可分为并行通讯和串行通讯两种。并行通讯便是数据以成组的方法在多个并行信道上一起传输;而串行通讯则是在传输进程中,二进制数据一位一位的经过一条通讯信道,而且依照规则的规程顺次传输,完结计算机与计算机或计算机与外部设备之间的通讯(数据交换)。因为串行通讯的收发方都只需要一条数据线,比较简单完结,而且长距离传输时也愈加牢靠,因而其运用非常广泛[4]。
串行通讯操控体系的模型如图1所示,其根本原理是:信息源将待传输的音讯转换成原始电信号(如电话体系中的电话机就可看成是信息源);发送设备对原始电信号进行某种改换或处理,使电信号契合信道的传输特性要求;信道是信息传输的通道,在串行通讯时,代表信息的数字信号序列按时刻次序一个接一个地在信道中传输;接纳端从收到的信号中恢复出相应的原始信号;受信者则将恢复的原始信号转变成相应的音讯(如电话机将对方传来的电信号复原成了声响);噪声源是信道中的一切噪声及通讯体系中噪声的调集[5]。
2 体系全体规划方案
2.1 体系功用
(1)经过4×4键盘输入0~F数据,并将此输入数据发送给上位机,上位机能够精确接纳所发送的数据。
(2)经过LED精确接纳上位机串口调试帮手发送的数据。
(3)波特率可分为2 400 b/s、4 800 b/s、9 600 b/s、19 200 b/s、38 400 b/s,而且能够随意修正。
2.2 规划方案
整个规划在Altera Cyclone II渠道上选用了“自顶向下”的模块化规划思维,并运用硬件描绘言语VHDL对电路进行描绘。
依据功用要求,体系可分为4×4键盘扫描输入模块、LED显现模块、接纳模块、发送模块和波特率发生模块5个功用模块,体系原理框图如图2所示。
规划原理为:4×4键盘扫描输入模块将所输入的数据转换为二进制代码传输给发送模块,发送模块再将此数据经过串口TXD发送到PC机;接纳模块经过串口RXD接纳由上位机或串口调试帮手发送的数据,而且显现在数码管上;数据传输速率由波特率发生模块的输出频率决议,能够依据需要进行设置,如可设置为2 400 b/s、4 800 b/s等。
3 功用子模块的规划与完结
3.1 接纳模块的规划
接纳模块的主要功用为接纳PC机发送8 bit二进制数。依据功用要求,选用VHDL硬件描绘言语对其功用进行描绘,模块顶层规划文件如图3所示,各端口分别为:bclkr(传输速率操控端,输入波特率发生模块的输出频率)、resetr(复位端)、rxd(接纳端口,串行输入)、r_ready(接纳安排妥当)、rbuf(接纳寄存器)。该模块选用有限状况机规划。
3.2 发送模块的规划
发送模块的主要功用是将键盘按键值以给定的波特率发送给PC机。本文的规划思维是:当不发送数据时,数据信号线表现为高电平,即闲暇位;当开端发送数据后,数据信号为低电平,也便是开始位,为了确保能够在发送数据时精确采样,选用频率为波特率16倍的输入时钟。输入时钟信号由波特率发生模块的输出供给。该模块选用VHDL硬件描绘言语进行描绘,顶层规划文件如图4所示,各端口分别为:bclkt(输入时钟)、resett(复位)、xmit_cmd_p(发送指令端)、txdbuf[7…0](发送缓冲器输入端)、txd(发送数据端)、txd_done(发送结束)。该模块选用有限状况机规划,依据功用要求,电路包含闲暇、开始、等候、移位、中止5个状况。
3.3 波特率发生模块的规划
波特率发生模块的主要功用:当输入不同数据时,将对输入的时钟信号有不同的分频比,然后发生不同的波特率。波特率发生器选用加法计数器来完结多种分频。发生38 400 b/s的VHDL程序如下:
process(clk,bo)
begin
case bo is
when 100=>clkout=clk38400;
when others=>clkout=null;
end case;
end process;
process(clk,res)
variable cnt5:integer range 39 downto 0;
begin
if res=′1′ then cnt5:=0; clk38400=′0′; //复位
elsif rising_edge(clk) then
if cnt5>=39 then cnt5:=0;clk38400=not clk38400;
//设置分频系数38 400波特率
else cnt5:=cnt5+1;
end if;
end if;
end process;
波特率为38 400 b/s的仿真波形如图5所示。其间,bo为波特率挑选设置端口,将其分配给FPGA开发板的3个拨动开关,经过拨动开关输入相应的数据完结波特率设置;clk为体系时钟信号,频率为24 MHz;res为复位端;clkout为输出时钟,供给给接纳和发送模块,完结不同波特率传输。
3.4 键盘模块规划
键盘模块的主要功用是将按键转换为8 bit二进制数,该功用的完结进程为:关于4×4键盘,一般衔接为4行、4列,因而,要辨认按键,只需要知道是哪一行和哪一列即可。为了完结这一按键辨认进程,本规划首要确认行值,假如读入的4行均为高电平,则必定没有键按下,假如读入的4行有一位为低电平,则对应的该行必定有一个键被按下,这样便能够取得按键的行值;然后经过加法计数器进队伍扫描,取得列值。将获取到的行值和列值组合成一个8 bit的数据,依据完结不同的编码对每个按键进行匹配。键盘模块仿真波形如图6所示。
3.5 数码管显现模块规划
数码管显现模块的主要功用是将所接纳到的数据在8 bit七段数码管上进行显现。本规划中运用的是两个4 bit一体、共阴极型的七段数码管。因而,数码管中被输入高电平的这一段将会被点亮,反之则不亮。运用数码管的这一特色,给数码管相应的段输入高电平,然后完结相应数据的显现。经过位选端口来操控,被选通的数码管显现数据,其他封闭。完结数码管显现的VHDL代码如下[6]:
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY led_display IS
PORT
(
ledclk: IN STD_LOGIC;
res: IN STD_LOGIC;
data: IN STD_LOGIC_VECTOR(7 downto 0);
ledout: OUT STD_LOGIC_VECTOR(7 downto 0);
sel: OUT STD_LOGIC_VECTOR(2 downto 0)
);
END led_display;
ARCHITECTURE led_architecture OF led_display IS
BEGIN
process(ledclk,res,data)
begin
if ledclk′event and ledclk=′1′ then
if res=′1′ then ledout=00000000;
end if;
case data is
when 00000000 =>ledout=00111111;
//显现数据0
when 00000001 =>ledout=00000110;
//显现数据1
when 00000010 =>ledout=01011011;
//显现数据2
: :
: :
when 00001111 =>ledout=01110001;
//显现数据F
when others =>null;
end case;
end if;
sel=000; end process;
END led_architecture;
4 体系下载与调试成果
在Quartus II 7.2中树立项目后,输入顶层规划文件及各个模块的VHDL程序代码,编译、仿真、管脚分配之后发生编程文件,将编程文件下载到FPGA芯片EP2C5Q208上,经过串口线衔接试验箱与PC机进行调试及验证。经过FPGA的4×4键盘输入0~F数据,并发送给PC机,PC机能够正确接纳到所发送的数据;一起,经过PC机串口调试帮手发送数据给FPGA时,FPGA也能够精确接纳到相应数据,而且将接纳到的数据在数码管上显现;改动波特率时也能够完结上述功用。试验成果表明,本规划满意规划要求。
本规划运用FPGA开发渠道将串行通讯操控体系集成在一片Altera EP2C5芯片中,进步了体系的质量和牢靠性。一起,因为依据FPGA的体系规划能够在现场进行编程及调试,具有很大的灵活性,能够方便地进行修正完善,用户能够在不改动电路体系的情况下,进行重复编程和随意修正。一旦规划老练,也能够制成AS%&&&&&%芯片,不光大大降低了规划危险,也能够节省本钱。