浅谈芯片基于FPGA专用串行通信芯片设计

更新时间:2024-01-15 点赞:14089 浏览:58984 作者:用户投稿原创标记本站原创

摘 要:介绍了基于FPGA的串行通信芯片的开发过程、设计思想和编程实现。采用模块化自上而下的设计方法,各模块设计使用VHDL语言,在MAX + PLUSⅡ下实现编译、仿真等,最后成功下载到FPGA芯片中。这种基于芯片的设计方法,具有设计灵活、研制周期短、易于调试、系统可靠性高等一系列优点。
关键词:FPGA VHDL 通信芯片
Design of a special serial communication chip based on FPGA
Liang Li
Beijing technology and business university, Beijing, 100048, China
Abstract: This paper introduced the development process, design idea and program realization of a serial communication chip based on FPGA. The module design method was taken by the top-down. Each module was designed by VHDL. Under MAX+PLUS Ⅱ, it was accomplished to compiler, simulated and so on. At last, it was downloaded to the FPGA chips. This method of design based on chips has series of advantages, such as design fast, short period of development, debug easy and system dependability high.
Key words: FPGA; VHDL; communication chip
利用EDA工具采用可编程逻辑器件,通过设计芯片来实现系统功能,这种方法称为基于芯片的设计方法。设计者可以直接定义器件的内部逻辑和管脚,将原来由电路板设计完成的大部分工作放在芯片设计中进行。这样不仅可以通过芯片设计实现多种逻辑系统功能,而且减轻了电路设计的难度,提高了设计的灵活性。基于芯片的设计可以减少芯片数量,提高系统的性能和可靠性。以串行通信芯片为例,介绍了用EDA工具和可编程逻辑器件设计串行通信芯片的开发过程、各模块工作原理及编程方法。
1 芯片总体结构
芯片的总体结构是以Altera公司的EP1K系列为主控芯片,主要由地址译码模块、线路控制/状态模块、不同工作方式的传输模块、可编程多路选择模块、可编程分频模块和LED点阵显示模块组成,系统总体结构框图如图1所示。
图1 系统总体结构框图
2 模块编程实现
本设计采用模块化的设计方法,按功能将芯片的内部结构分成若干个模块,规定每一模块的功能和各模块之间的接口,先对各模块分别调试,然后再将各模块整合起来联调。这样设计有利于各功能模块程序的编写和调试,从而降低整个芯片的调试难度,提高软件的可维护性及可读性。
本芯片的主要功能包括:(1)可编程实现不同传输速率;(2)可编程实现4条传输线路的选择;(3)可编程实现异步带校验收发;(4)可编程实现异步无校验收发;(5)可编程实现同步带校验收发;(6)可编程实现同步无校验收发;(7)能够进行多位收发。

2.1 地址译码模块及内部寄存器选择

本芯片具有可编程特性,它从8位数据线上输入数据,从3位地址线上输入地址,对特定地址的寄存器进行设置。地址译码模块将输入的地址和数据转化为所要进行操作的选通信号。程序如下:
IF(RESET=‘0’)THEN
S0<=‘0’;
HEND<=“00”;
…………………………
ELSIF(ADRESS=“0100”AND IDATA=“10000000”)THEN
S0<=‘1’;
HEND<=“11”;
上例中,S0是一个选通信号,当特定的数据和地址输入时,S0被置‘1’。HEND是一个应答信号,它被置成“11”表示对S0设置已经完成,可以进行下一个寄存器的设置。

2.2 多路选择模块

本芯片区别于传统8251串行通信芯片的是多路传送功能,该功能可使串行通信芯片的利用率大大增加。本芯片可以驱动4个独立串口,通过给定不同的地址代码,即可选择不同的传输路径。程序如下:
IF(RESET=‘0’)THEN
F<=“00”;
ELSIF(P11’EVENT AND P11=‘1’)THEN
F<=“11”;
…………………………
IF(RESET=‘0’)THEN
V<=“00”;
ELSIF(F=“11”)THEN
V<=“01”;
…………………………
CASE V IS
WHEN“00”=>TXD(0)<=‘0’;
上例中,P11是译码模块的选择信号,反映了外部的动作。F是一个过渡信号,用来将CPU的设置传达给信号V。V信号通过CASE语句直接决定路径的选择。TXD是一个端口信号,其类型是4位标准位逻辑矢量,用来表示4个端口。

2.3 可编程分频模块

本芯片可编程选择3个传输速率,通过对系统时钟进行3个不同的分频来实现。程序如下: IF(RESET=‘0’) THEN
CNT:=0;
CLKOUT<=‘0’;
ELSIF(CLKIN’EVENT AND CLKIN=‘1’) THEN
IF(CNT<(PERIODS/2)) THEN
CLKOUT<=‘1’;
CNT:=CNT+1;
ELSIF(CNT<(PERIODS-1)) THEN
CLKOUT<=‘0’;
CNT:=CNT+1;
ELSE
CNT:=0;
以上程序段是能进行偶数分频的半整数分频器,整数类型信号PERIODS是分频数,CNT是用来进行分频控制的计数器。

2.4 异步带校验发送模块

(1)输出缓冲区模块:CPU将要发送的数据放在8位数据总线上,在WR端给一个上跳沿。数据首先被并行存入8位输出缓冲区内,而不是直接发送。
(2)计算异步传送校验位模块:为了保证传输质量,引入了校验环节。笔者采用奇偶校验法,将8位数据两两进行异或运算。如果结果等于1,表示8位数据中1的数量为奇数;如果结果为零,表示8位数据中1的数量为偶数。发送数据时,将奇偶校验位安插在原数据的第零位与第一位之间发送。
(3)对输出标志位的设置:为了反映芯片的工作情况,定义了TDEMPTY,即发送缓冲区空状态。当没有数据发送时,TDEMPTY=1;当正在发送数据时,TDEMPTY=0。
(4)输出模块:输出模块负责将输出缓冲区中的数据以串行方式一位接一位地输出,是一个并/串转换的过程。
(5)输出计数器:为了实现8位数据按顺序串行输出,采用了一个6位计数器SCIT。选择该计数器的10个状态作为发送控制状态,分别发送一位启动位、一位停止位、一位校验位和8位数据。

2.5 异步带校验接收模块

(1)输入缓冲区:芯片收到数据后不是直接发给CPU,而是先存放在8位输入缓冲区中,等待CPU的读取。
(2)读标志位的设置:CPU可以通过读标志位的变化确定是否接收到一组数据。为此,定义了信号RDFULL,用来表示接收缓冲区的状态。1表示满,即等待CPU读取数据;0表示空,即没有可供读取的数据。
(3)校验位的计算:为保证传输数据的正确,芯片收到一组数据后,会对其进行奇偶校验运算,将结果与收到的检验位进行比较。相等表示传输正确,否则
(下转页)
(上接页)
表示传输错误。
(4)读出模块:当接收缓冲区满时,芯片会通知CPU取走数据,这是一个读出数据的过程。
(5)启动位的识别:将启动位设置为0,当接收端收到0且保持了足够的时间时,将接收0后面的数据。
(6)接收计数器:接收过程由接收计数器控制,将串行数据按顺序接收,进行串/并转换存入输入缓冲区。
3 结束语
本设计以EDAPRO/240H实验仪为开发系统,以VHDL为设计语言,以Altera公司的MAX+PLUSⅡ软件为开发工具,以EP1K30QC208-3芯片为目标载体,根据系统对硬件的功能和行为要求,进行整体的编译和逻辑仿真,然后进行转换、布局、延时仿真生成配置文件,最后下载到FPAG芯片中,实现其硬件功能,基于FPGA的串行通信芯片的设计达到了预期效果。
基于FPGA实现了串行通信芯片的设计,充分利用了FPGA的优势。这种基于芯片的设计方法,具有设计灵活、修改方便、研制周期短、易于调试、系统可靠性高等一系列优点,特别适于中小型系统的开发研制。
参考文献
徐志军,徐光辉.CPLD/FPGA的开发与应用[M].北京:电子工业出版社,2002.
潘松,王国栋.VHDL实用教程[M].成都:电子科技大学出版社,2000.
[3]北京理工大学ASIC研究所.VHDL语言100例详解[M].北京:清华大学出版社,1999.
[4]龚文斌.AC01/02型地铁列车辅助逆变器A14模块IGBT替代的研究[D].上海:上海交通大学,2011.
[5]乔恩明,薛玉均,刘敏,张乃国.电力电子器件知识讲座(七) 绝缘栅双极型晶体管(IGBT)

(一)[J]源于:毕业设计论文模板www.618jyw.com

.电子元器件应用,2011(10):58-62.
相关文章
推荐阅读

 发表评论

共有3000条评论 快来参与吧~