koorio.com
海量文库 文档专家
当前位置:首页 >> 信息与通信 >>

基于FPGA的串行通信实现与CRC校验_图文

北京化工大学 硕士学位论文 基于FPGA的串行通信实现与CRC校验 姓名:刘春阳 申请学位级别:硕士 专业:检测技术与自动化装置 指导教师:韩建国 20060609

摘要

基于FPGA的串行通信的实现与CI屺校验

摘要
Receiver Tr柚smitter通用异步

uART(即Universal A心ynchronous

收发器)是广泛使用的串行数据传输协议。U√虹江允许在串行链路上 进行全双工的通信。 串行外设用到RS232.C异步串行接口,一般采用专用的集成电路 即IJART实现。如8250、8251、NSl6450等芯片都是常见的I JART 器件,这类芯片已经相当复杂,有的含有许多辅助的模块(如FIFO), 有时我们不需要使用完整的uART的功能和这些辅助功能。或者设计

上用到了FP蝴Pu)器件,那么我们就可以将所需要的UART功能
集成到FPGA内部。使用vcrilog HDL将IJART的核心功能集成,从 而使整个设计更加紧凑、稳定且可靠。同时采用循环冗余校验(cRc 校验),以获得更好的传输性能。本文应用EDA技术,基于FPGA器

件设计与实现Um盯,并采用cRc校验。主要工作如下:
1、

在异步串行通信电路部分完全用FPGA来实现。选用Xilinx公

司的Spartan III系列的xC3SlooO来实现异步串行通信的接收、发

送和接口控制功能,利用FPGA集成度比较高,具有在线可编程能力, 在其完成各种功能的同时,完全可以将串行通信接口构建其中,可根 据实际需求分配资源。
2、

利用Verilog HDL语言非常容易掌握,功能比VHDL更强大的特

点,可以在设计时不断修改程序,来适用不同规模的应用,而且采用


北京化工大学硕士学位论文

verilog输入法与工艺性无关,利用系统设计时对芯片的要求,施加 不同的约束条件,即可设计出实际电路。
3、

利用ModelSim仿真工具对程序进行功能仿真和时序仿真,以验

证设计是否能获得所期望的功能,确定设计程序配置到逻辑芯片之后 是否可以运行,以及程序在目标器件中的时序关系。
4、

为保证数据传输的正确性,采用循环冗余校验CRC(Cyclic Check),该编码简单,误判概率低,为了减少硬件成本,

Redundancy

降低硬件设计的复杂度,本设计通过CRC算法软件实现。 实验结果表明,基于EDA技术的现场可编程门阵列FPGA集成 度高,结构灵活,设计方法多样,开发周期短,调试方便,修改容易, 采用FPGA较好地实现了串行数据的通信功能,并对数据作了一定的 处理,本设计中为CRc校验。另外,可以利用FPGA的在线可编程 特性,对本设计电路进行功能扩展,以满足更高的要求。

关键词:FPGA,串行通信,verilog语言,CRC校验,ModelSim 仿真

摘要

rI_1le Implenlent of Senal

Communication Based on

UART(UniVersal舡ynchronous
data transfer protocol which is widely communication at serial 1iI】【l【circuit. RS232-C

Receiver

TransIIlitter)is



serial

used.Um汀allow

to full-duplex

舡ynchronous

serial

iIltcrface

is

used

by

Serial

peripheral equipment,Generally it iS implemented by IC namely UART such
aS

8250、8251、NSl6450,ney
chips
are

are

the faIniliar UART components, and indude

These

Very

complicated

many

secondary

modules(fbr
functions

exampk these used

FII砷O),

sometimes we don’t functions。 we

use

integrated

up蝴

and

secondary
on

Possibly

FPG~CPLD

components

are

desi印,So

can

integrate UART fllnctions into

FPGA。、,crilog HDL is adopted to integrate UART central fIlnctions,so it
can

make the wh01e design tighter、more steady and more reliable。At the

same time cyclic R℃dundancy

check(CRC)is
p印er

adopted,make transfer

pe由rmance

more superior。T11is

is baSed FPGA component

design

to implement UART,and CRC is used。As follow:

1.

Asynchronous by

seriaI

communication XC3s1000

circuits

are

implemented
III series

completely

FPGA。ne

ofⅪ】inx corp.spanan

was selected to implement Asynchronous serial communication’receive、
11l

北京化工大学硕士学位论文

transfer柚d iIlterface∞ntrol
rate,

fIlrlction,Due to

FP(後higll iIlte舒ation
l【inds of

∞nfigIlrable ability
can

on—line,

舡FPGA pe怕珊all

ftlnctions,it distribute

iIlte铲ate

serial communication intedhce completely and

resources

according lo

a咖a1 demands。
to

2.AccordiIlg to the characteristics that Verilog HDL is easy
the function is more strong,we
call

master and
to apply

mod匆progr锄contillually
technics,When we
can

difeerent scale,、飞}rilog is independent of system,According to the

design the di丘erent

dem蚰d

for

chip,we

add

on

restriction condition,design actual circuits. 3. Program

c翘be simulated

to function and timing by

ModelSim,

to

Validate whether the design

c柚gaill

expected function,a11d the

desi印
as

pro掣am
well
as

caIl

mn

no珊ally

when it was downloaded into logical

chip,

the timing felation of the
assure

object program.

4.In order to

the Validity of data transfer,Cyclic Redundancy

Check iS adopted,this code is simple,wrongheaded probability is low, CRC arithmetic is implemented by software due to reduce hardware costs and

des培n complexities.
The result express that FPGA integration
raCe

is

high,

configuration is nexible,design mefhod is multiple,deVelopmental period id short, debugging is coⅡvenient, modification is easy, FPGA

implement well serial data communication function and deal with definite data。 In addition,FPGA has the characteristics that
can

be programmed



摘要

onlille,the design drcuit

can

be enla培e function to meet higher demand.

Key words:FPGA,serial communication,Verilog HDL,CRC ModelSim SiIImlator



8820‘{ 北京化工大学位论文原创性声明

本人郑重声明:

所呈交的学位论文,是本人在导师的指导下,

独立进行研究工作所取得的成果。除文中已经注明引用的内容外,本 论文不含任何其他个人或集体己经发表或撰写过的作品成果。对本文 的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本 人完全意识到本声明的法律结果由本人承担。

作者签名:

割查田

日期:

2QQ鱼:鱼:皇

关于论文使用授权的说明

学位论文作者完全了解北京化工大学有关保留和使用学位论文 的规定,即:研究生在校攻读学位期问论文工作的知识产权单位属北 京化工大学。学校有权保留并向国家有关部门或机构送交论文的复印 件和磁盘,允许学位论文被查阅和借阅;学校可以公布学位论文的全 部或部分内容,可以允许采用影印、缩印或其它复制手段保存、汇编 学位论文。

保密论文注释:本学位论文属于保密范围,在上年解密后适用
本授权书。非保密论文注释:本学位论文不属于保密范围,适用本授 权书。 作者签名: 导师签名:

到查田

日期:

2QQ鱼:互!里

北京化工太学硬士学位论文

第一章绪论

1.1引言 在近年来,随着微电子学和计算机科学的迅速发展,给EDN电子设计自动

化珩业带来了巨大的变化。特别是进入20世纪90年代后,电子系统已经从电
路板级系统集成发展成为包括AsIc、FPGA和嵌入系统的多种模式。可以说E工)A 产业已经成为电子信息类产品的支柱产业。EDA能蓬勃发展的关键技术之一就 是采用了硬件描述语言(HDL)描述电路系统,这也是计算机应用的一次重大突破, 硬件描述语言的出现使电子系统的设计可以象编c程序一样简单易学,从而让软 件工程人员很容易了解硬件的设计LlJ。

对于FPGA和CPID开发而言,比较流行的瑚)L主要有vcIilog}Ⅱ)L、ⅥmL、 ABEL广}玎)L和AHDL等,其中vHDL和Ⅶrnog|Ⅱ)L因适合标准化的发展方向
而最终成为mEE标准。但与v如)L相比Vcm0Em)L有个最大的优点是:它是 一种非常容易掌握的硬件描述语言,只要有c语言的编程基础,一般经过2到3 个月的认真学习和实际操作就能掌握这种设计技术。并且完成同一功能它的程序

条数一般仅为ⅥⅢL的1,3【2J。
当今社会是数字化的社会,是数字集成电路广泛应用的社会。数字集成电 路本身在不断地进行更新换代。它由早期的电子管、晶体管、小中规模集成电路、
发展到超大规模集成电路rvLSlc,几万门以上)以及许多具有特定功能的专用集

成电路。但是,随着微电子技术的发展,设计与制造集成电路的任务已不完全由
半导体厂商来独立承担。系统设计师们更愿意自己设计专用集成电路(AsIc)芯

片,而且希望AsIc的设计周期尽可能短,晟好是在实验室里就能设计出合适的 AsIc芯片,并且立即投入实际应用之中.因而出现了现场可编程逻辑器件
(FPLD),其中应用最广泛的当属现场可编程门阵列(FPGA)和复杂可编程逻辑器 件(cPLD)。 自1985年xilinx公司推出第一片现场町编程逻辑器件(FPGA)至今,FPGA 已经历了十几年的发展历史。在这十几年的发展过程中,以FPGA为代表的数字

系统现场集成技术取得了惊人的发展:现场可编程逻辑器件从最初的1200个可
利用门,发展到90年代的25万个可利用门,乃至当新世纪来临之即,国际上现 场可编程逻辑器件的著名厂商~tera公司、XiliⅡx公司又陆续推出了数白.万门的

单片FPGA芯片,将现场可编程器件的集成度提高到一个新的水平【3】.【”。
纵观现场可编程逻辑器件的发展历史,其之所以具有巨大的市场吸引力, 纵观现场可编程逻辑器件的发展历史,其之所以具有巨大的市场吸引力,

北京化工大学硕士学位论文

根本在于:FPGA不仅可以解决电子系统小型化、低功耗、高可靠性等问题,而 且其开发周期短、开发软件投入少、芯片价格不断降低,促使FPGA越来越多地

取代了ASIC的市场,特别是对小批量、多品种的产品需求,使FPGA成为首选。 目前,FPGA的主要发展动向是:随着大规模现场可编程逻辑器件的发展,系统
设计进入”片上可编程系统”(SOPc)的新纪元;芯片朝着高密度、低压、低功

耗方向挺进;国际各大公司都在积极扩充其IP库,以优化的资源更好的满足用
户的需求,扩大市场:特别是引人注目的所谓FPGA动态可重构技术的开拓,将 推动数字系统设计观念的巨大转变。

1.2研究背景及意义
FPG~cPLD是20世纪90年代发展起来的大规模可编程逻辑器件,随着 EDA技术和微电子技术的进步,FPGA的时钟延迟可达到ns级,结合其并行工
作方式,在超高速、实时测控方面有非常广阔的应用前景;并且FPGA具有高集 成度、高可靠性,几乎可以将整个设计系统下载于同一芯片中,实现所谓片上系

统,从而大大缩小其体积,因此以FPGA/cPLD为代表的可编程逻辑器件受到了世
界范围内广大电子设计工程师的普遍欢迎,应用日益广泛。在国外,FPGA的技

术发展与应用已达到相当高的程度;在国内,FPGA技术发展十分迅速,然而与

国外相比还存在较大的差距吼
本文的研究课题,是使用FPGA代替传统的单片机和外围扩展芯片,利用串
行通讯相当成熟的技术,目的是加快电子设计者以及开发人员更好地学习和掌握 FPGA技术,充分体会FPGA所带来的设计理念和应用前景。
1.2.1

FPGA/cPLD概述

FPGA(现场可编程门阵列)与cPLD(复杂可编程逻辑器件)都是可编程逻辑

器件,它们是在PALGAL等逻辑器件的基础之上发展起来的。同以往的n也,
GAL等相比较,FPGA/CPLD的规模比较大,它可以替代几十甚至几千块通用 IC芯片。这样的FPGA/cPLD实际上就是一个子系统部件。这种芯片受到世界 范围内电子工程设计人员的广泛关注和普遍欢迎。经过了十几年的发展,许多公 司都开发出了多种可编程逻辑器件。比较典型的就是)(ilinx公司的FPGA器件系 列和Altera公司的cPLD器件系列,它们开发较早,占用了较大的PLD市场。 FPGA/cPLD芯片都是特殊的AsIc芯片,与其它PLD的结构各有其特点 和长处,但概括起来,他们是由三大部分组成的【61:

①二维的逻辑块阵列,构成了PIJD器件的逻辑组成核心;


北京化工大学硕士学位论文

②输入/输出块,连接逻辑块的互连资源; ③连线资源,由各种长度的连线线段组成,其中也有一些可编程的逻辑开 关,用于逻辑块之间、逻辑块与输入/输出块之间的连接。 它们除了具有ASIC的特点之外,还具有以下几个优点:


随着ⅥsI(very

Large scale

Ic,超大规模集成电路)工艺的不断提高单一

芯片内部可以容纳上百万个晶体管,FPGA/CPLD芯片的规模也越来越大,其 单片逻辑门数已达到上百万门,它所能实现的功能也越来越强,同时也可以实现 系统集成。
?

FPGA/cPLD芯片在出厂之前都做过百分之百的测试,不需要设计人

员承担投片风险和费用,设计人员只需在自己的实验室里就可以通过相关的软硬 件环境来完成芯片的最终功能设计。所以,FPGA/cPLD的资金投入小,节省 了许多潜在的花费。 ?用户可以反复地编程、擦除、使用或者在外围电路不动的情况下用不同 软件就可实现不同的功能。所以,用FPGA/PLD试制样片,能以最快的速度 占领市场。FPGA/cPLD软件包中有各种输入工具和仿真工具,及版图设计工 具和编程器等全线产品,电路设计人员在很短的时间内就可完成电路的输入、编 译、优化、仿真,直至最后芯片的制作。当电路有少量改动时,更能显示出FPGA /cPID的优势。电路设计人员使用FPGA/CPu)进行电路设计时,不需要具 备专门的IC(集成电路)深层次的知识, FPGA/CPLD软件易学易用,可以使设

计人员更能集中精力进行电路设计,快速将产品推向市场m。 本文研究的是基于FPGA的串行通信技术以及CRC校验。

1.3论文的研究内容和结构安排
本论文是基于FPGA开发板,对研究串行通讯过程中软、硬件设计遇到 的问题加以总结归纳,提高系统运行效率。主要研究了在FPGA实现串行通讯过 程中,采用CRC校验和仿真结果的描述。论文结构安排如下: 第一章绪论

从EDA技术出发,介绍了电子技术发展与FPG~cPLD的概述;
spartan

第二章介绍硬件描述语言(Verilog HDL)、x订inx 逻辑器件原理及结构;

III系列可编程

第三章介绍串行通信和并行通信协议,论述从FPGA实现串行通信的可性行及 方法: 第四章针对串行和并行通信的实现,不同的通信模式,设计相应的控制电路, 并通过cRc校验,实现数据传输的可靠性:利用ModelSim仿真程序,

北京化工大学硕士学位论文

验证实验结果的正确性; 第五章关于本次设计的结论和展望。

北京化工大学硕士学位论文

第二章FPGA特征与HDL语言

2.1

FPG^的结构特征嘲
FPGA器件从结构上而言,其核心部分是逻辑单元阵列(LCA,Logic
Cell

Array),LcA是由内部逻辑块矩阵及周围的输人/输出模块IoB(Input/outpu


Block)组成,而其内部连线——可编程内部互连资源PI(Progr锄able
Logic

In

terconnection)则占据逻辑块的行列之间,以及逻辑块与I/O块之间的通道。 LCA的可编程逻辑块CLB(Configurable B10ck)和IOB的功能及其互

连,是由存储器(如PROM,EPROM等)中的配置程序来控制的。 综上所述,以xilinx公司FPGA为例,基本结构主要由以下几个部分构成, 如图2—1所示: >可编程逻辑功能模块CLB >可编程输入输出模块IOB >可编程内部互连资源PI

可配置逻辑蟪

市蟪疆稚

图2.1
Fi g.2?l

FPGA的基本结构
FPGA basic stmcturc

北京化工大学硕士学位论文

随着工艺的进步和应用系统需求,一般在FPGA中还包含以下可选资源: 夺存储器资源(Block RAM和select RAM) ◆数字时钟管理单元(分频/倍频、数字延迟) 夺I/0多电平标准兼容(select I/O) 夺算数运算单元(乘法器、加法器) 夺特殊功能模块(MAC等硬IP核) ◆微处理器(P0wer Pc等硬处理器)

2.1.1可编程逻辑块cLB

FPGA器件的主体部分是由相同的可编程逻辑模块CLB构成的矩阵,每个c LB含有可编程的组合逻辑和寄存器,寄存器可由组合逻辑或直接由CLB的输出 装入信息,寄存器的输出也可直接驱动组合逻辑。10B和PI同样可以编程设计。 图2—2所示是可编程逻辑块(CLB)的基本结构原理图。


图2.2可编程逻辑块(cLB)的基本结构原理图 F-g.2-2
CIm basic stnIctural p“nciple

由图可以看出CLB的几个基本特点。其一,较多的独立的输人/输出以及 灵活、对称的结构。使得cLB组合逻辑能力很强,逻辑设计非常灵活。CLB的 两个四输入组合逻辑发生器F、G(输人为F1’F4,G1’G4),可以独立提供由其 4个输入口随意定义的布尔函数,而第三个组合逻辑发生器H可以实现九变量 的逻辑功能,用于诸如奇偶校验或两个四输入器件的扩展密度的比较。并且,由

北京化工大学硕士学位论文

三个组合逻辑发生器形成的组合逻辑信号的输出,可以通过由配置程序定义的多 路转换器,使F或H的输出和X输出相连,G或H的输出和Y输出相连, 从而使一个cLB可以用来实现多达四个变量的两个任意和独立的逻辑函数功 能,或者四个变量的一个任意逻辑函数和五个变量的部分确定的逻辑函数组合, 或者多达九个变量的部分确定的逻辑函数功能。 更为有意义的,Xilinx的FPGA结构有两个方面的创新概念,其一是所谓 的LcA(Logic
cell

Array,逻辑单元陈列)结构。正是由于这个LcA分布结

构,使之具有门阵列和可编程逻辑器件的双重特征。LcA像一个门阵列,通过内

部的可编程布线通道的内部互连网络,把可编程逻辑块cLB按设计要求连接在
一起以综合阵列中的逻辑功能。 其次,另一个创新的概念在于,其芯片的逻辑功能的配置基于内部阵列分 布的SRAM原理。即通过对分布的sRAM的不同的加电配置,来决定各个部分的 逻辑定义,允许LcA靠简单的加载新的数据进行配置sRAM单元,从而实现芯 片的新的逻辑配置。也就是说,加载不同的配置数据,芯片可以不断更新且反复 使用。对于FPGA器件编程实现,实际上就是由加载于sRA^I上的配置数据决定 和控制各个CLB、IoB及内部连线PI的逻辑功能和它们之间的相互连接关系。 通常这个规划格式的数据可存放于外附的PRoM或EPRoM中,在系统开机或需 要时自动载人FPGA中的sRAM,或者直接由微处理器控制当成系统的起始动作 来处理。

x订inx各系列FPGA,其LCA的配置均是由点阵分布于芯片的存储单元一 一sRAM来实现的,通常由开发工具软件产生配置LcA的数据文件,通过其数据
配置接口,采用一定的设置模式,加载于SRAM中。 配置存储器是一种静态存储器(Static RAM),具有高度的可靠性、抗噪声 能力和综合可测性能。 由于SRAM的结构原理上的一些特点,使之可以不受电源剧烈变化或粒子 辐射的影响。在可靠性实验中,即使存在很高剂量的辐射也没有产生过软错误。 分布于LCA的四周的输入输出模块,可以灵活编程,实现其不同的逻辑功能, 满足于同逻辑接口的需要,是)(ilill)【FPGA的又一大特征。

2.1.2输入/输出模块I∞

用户可编程的IOB为芯片外部引脚和内部逻辑提供了一个界面,每个 IoB控制一个外部引脚,并将引脚定义为输入、输出或双向传输三种功能,基本 结构如图2—3所示。



北京化工大学硬士学位论文

图2.3 10B模块内部结构

更辩-3

10B module intemal

s咖ctu他

当10B被定义为输入时:输入信号经Pad进入输入缓冲器,并根据用户 编程要求,既可以直接输入,亦可以通过D触发器或电平触发锁存器输入,而 此时亦可由配置选择到达触发器或锁存器的信号是否需要延时,以补偿时钟信号 的延迟。最后,输入信号可由11和12两条路径进入内部逻辑阵列。 当IOB被定义为输出时,输出信号可以通过配置选择是直接传输到Pad, 或通过边沿触发D触发器暂存后传输。可以选择用使能信号(T)来使输出缓 冲器是否为高阻态,以实现三态输出或双向I,O传输。同时,通过用户配置的 选择,可使输出信号(OuT)和使能信号(T)反相。

2.1.3可编程互连资源IR

可编程互连资源包括各种长度的金属连线线段和一些可编程连接开关,它们 将各个cLB之间和cLB与10B之间互相连接起来,构成各种复杂功能的系 统。

2.2

HDL语言简介‘观
硬件描述语言HDL是一种用形式化方法描述数字电路和系统的语言。利用

这种语言,数字电路系统的设计可以从上层到下层(从抽象到具体)逐层描述自 己的设计思想,用一系列分层次的模块来表示极其复杂的数字系统。然后,利用 电子设计自动化(EDA)工具,逐层进行仿真验证,再把其中需要变为实际电路

北京化工大学硕士学位论文

的模块组合,经过自动综合工具转换到门级电路网表。接下去,再用专用集成电

路ASIC或现场可编程门阵列FPGA自动布局布线工具,把网表转换为要实现的具 体电路布线结构。
目前,这种高层次(high—leve卜design)的方法已被广泛采用。据统计,目 前在美国硅谷约有90%以上的AsIc和FPGA采用硬件描述语言进行设计。 硬件描述语言HDL的发展至今已有20多年的历史,并成功地应用于设计的

各个阶段:建模、仿真、验证和综合等。到20世纪80年代,已出现了上百种硬
件描述语言,对设计自动化曾起到了极大的促进和推动作用。但是,这些语言一 般各自面向特定的设计领域和层次,而且众多的语言使用户无所适从。因此,急 需一种面向设计的多领域、多层次并得到普遍认同的标准硬件描述语言。20世

纪80年代后期,ⅧDL和Verilog皿L语言适应了这种趋势的要求,先后成为I
EEE标准110】。

2.2.1、fHDL语言的特点㈣ ⅧDL是一种独立于实现技术的语言,它不受某一特定工艺的束缚,允许设 计者在其使用范围内选择工艺和方法。为了适应未来的数字硬件技术,VHDL还
提供了将新技术引入现有设计的潜力。vHDL语言的最大特点是描述能力极强, 覆盖了逻辑设计的诸多领域和层次,并支持众多的硬件模型。具体而言,VHDL 有一些特点: 夺支持从系统级到门级电路的描述,同时也支持多层次的混合描述;描述形式 可以是结构描述,也可以是行为描述,或者二者兼而有之。 夺既支持自底向上的设计,也支持自顶向下的设计;既支持模块化设计,也支 持层次化设计;支持大规模设计的分解和设计重用。 夺既支持同步电路,也支持异步电路;既支持同步方式,也支持异步方式。 呤支持传输延迟,也支持惯性延迟,可以更准确地建立复杂的电路硬件模型。 夺数据类型丰富,既支持预定义的数据类型,又支持白定义的数据类型。 夺支持过程与函数的概念,有助于设计者组织描述,对行为功能进一步分类。 夺提供了将独立的工艺集中于一个设计包的方法,便于作为标准的设计文档保 存,也便于设计资源的重用。
夺V H D 夺V H D

L语言的类属提供了向设计实体传送环境信息的能力。
L语言的断言语句可用来描述设计本身的约束信息,支持设计直接在

描述中书写错误条件和特殊约束,不仅便于模拟调试,而且为综合化简提供了重 要信息。

北京化工大学硕士学位论文

2.2.2 Ver.Iog

HDL语言的特点

verilog

HDL是一种硬件描述语言,用于从算法级、门级到开关级的多种

抽象设计层次的数字系统建模。被建模的数字系统对象的复杂性可以介于简单的

门和完整的电子数字系统之间。数字系统能够按层次描述,并可在相同描述中显
式地进行时序建模【12l。
verilog

HDL语言具有下述描述能力:设计的行为特性、设计的数据流特

性、设计的结构组成以及包含响应监控和设计验证方面的时延和波形产生机制。

所有这些都使用同一种建模语言。此外,Ver订og HDL语言提供了编程语言接口, 通过该接口可以在模拟、验证期间从设计外部访问设计,包括模拟的具体控制和 运行。
verilog

HDL语言不仅定义了语法,而且对每个语法结构都定义了清晰的

模拟、仿真语义。因此,用这种语言编写的模型能够使用Verilog仿真器进行验
证。语言从c编程语言中继承了多种操作符和结构。Verilog HDL提供了扩展的 建模能力,其中许多扩展最初很难理解。但是,Verilog HDL语言的核心子集非

常易于学习和使用,这对大多数建模应用来说已经足够。当然,完整的硬件描述
语言足以对从最复杂的芯片到完整的电子系统进行描述。 下面列出的是Vcrilog硬件描述语言的主要能力【13】: ◆基本逻辑门,例如蛆d、or和naIld等都内置在语言中。 夺用户定义原语(uDP)创建的灵活性。用户定义的原语既可以是组合逻辑原 语,也可以是时序逻辑原语。 夺开关级基本结构模型,例如pmos和nmos等也被内置在语言中。 令提供显式语言结构指定设计中的端口到端口的时延及路径时延和设计的时 序检查。 夺可采用三种不同方式或混合方式对设计建模。这些方式包括:行为描述方式

~使用过程化结构建模;数据流方式一使用连续赋值语句方式建模;结构化方式 一使用门和模块实例语句描述建模。
夺Ve棚og HDL中有两类数据类型:线网数据类型和寄存器数据类型。线网类

型表示构件间的物理连线,而寄存器类型表示抽象的数据存储元件。 夺能够描述层次设计,可使用模块实例结构描述任何层次。 夺设计的规模可以是任意的;语言不对设计的规模(大小)施加任何限制。 夺Vemo只HDL不再是某些公司的专有语言而是砸EE标准。

北京化工大学硕士学位论文

审人和机器都可阅读vcrilog语言,因此它可作为EDA的工具和设计者之间的
交互语言。

冷verilog叻L语言的描述能力能够通过使用编程语言接口(Pu)机制进一步
扩展。Pu是允许外部函数访问Vcrilog模块内信息、允许设计者与模拟器交互 的例程集合。 ◆设计能够在多个层次上加以描述,从开关级、门级、寄存器传送级(RTL) 到算法级,包括进程和队列级。 夺能够使用内置开关级原语在开关级对设计完整建模。 夺同一语言可用于生成模拟激励和指定测试的验证约束条件,例如输入值的指 定。
夺verilog

HDL能够监控模拟验证的执行,即模拟验证执行过程中设计的值能

够被监控和显示。这些值也能够用于与期望值比较,在不匹配的情况下,打印报 告消息。

◆在行为级描述中,VcrilogⅧ)L不仅能够在砌儿级上进行设计描述,而且能
够在体系结构级描述及其算法级行为上进行设计描述。 夺能够使用门和模块实例化语句在结构级进行结构描述。
夺vcrilog

HDL的混合方式建模能力,即在一个设计中每个模块均可以在不同

设计层次上建模。

◆Verilog}玎)L还具有内置逻辑函数,例如&(按位与)和I(按位或)。
夺对高级编程语言结构,例如条件语句、情况语句和循环语句,语言中都可以 使用。 夺可以显式地对并发和定时进行建模。 令提供强有力的文件读写能力. 夺语言在特定情况下是非确定性的,即在不同的模拟器上模型可以产生不同的 结果;例如,事件队列上的事件顺序在标准中没有定义【13l。

2.2.3两种¨DL语言的比较

VHDL语言语法描述严谨,给阅读和使用都带来了极大的好处,对超大规 模系统级电路描述能力强于Ver“og HDL语言,但是在门级、RTL级、算法级 上的描述不如Ver订og HDL语言灵活、简便。 VHDL语言支持基于库(Library—Based)的设计方法,而且还支持同步电 路、异步电路、FPGA以及其他随机电路的设计。其可应用范围之广是Verilog HDL语言所不能比拟的。由于v}IDL很早就成为IEEE的标准公开发布,所以目

北京化工大学硕士学位论文

前大多数EDA工具几乎都支持vHDL语言。这样就给vHDL语言进一步推广和 应用创造了良好的环境。VHDL语言系统硬件描述能力强,具有多层次描述系统 硬件功能的能力,可以从系统的数学模型直到门级电路。另外,高层次的行为描

述可以与低层次的RTL描述和结构描述混合使用。例如,在Pc机扩展槽上设
计一块接口卡,该接口卡的硬件设计应满足主机的接口要求。此时,主机部分功

能可以用行为方式描述,而接口卡可以采用RTL方式描述。在系统仿真时就可
以验证接口卡的工作是否正确。这样,在接口卡设计出来以前就可以知道接口卡

的工作是否满足系统要求。vHDL语言能进行系统级的硬件描述,这是它最突出
的优点。而且,v}1DL语言可以自定义数据类型,这样也给编程人员带来了较大 的自由和方便ll”。 而verilog HDL语言由于早在1983年被提出,因而具有广泛的设计群

体,成熟的资源较vHDL语言要丰富,更为关键的是其语言从C语言衍生出来
的,所以比较容易掌握,不像vHDL语言比较晦涩难懂。 在国外,欧洲人多用V凹L语言,美国人多用Verilog HDL语言;国内院 校内多用V皿L,企业内多用Verilog HDL语言。 这两种语言在硬件设计时都与工艺无关,当门级或门级以上层次的描述通 过仿真检验以后,再用相应的工具将设计映射成不同的工艺(MoS,cMOS)。这 样,在工艺更新时,就无须修改原设计程序,只要改变相应的映射工具就行了。

2.2.4 ver

Ilog设计法的优点‘1卅

本设计采用verilog HDL输入法,由于VemDg皿)L的标准化,可以很容易 地把完成的设计移植到不同厂家的不同芯片中去,并在不同规模应用时可以较容 易地作修改。这不仅是因为用vcrilog HDL所完成地设计,它的信号位数是很容 易改变的,可以很容易地对它进行修改,来适应不同规模的应用;在仿真验证时, 仿真测试矢量还可以用同一种描述语言来完成,而且还因为采用VerilogⅧ)L综

合器生成的一种标准的电子设计互换格式(EDIF)文件,独立于所采用的实现
工艺。有关工艺参数的描述可以通过Verilog HDL提供的属性包括进去,然后利 用不同厂家的布局布线工具,在不同工艺的芯片上时序。 采用Vcrilog HDL输入法最大的优点时其与工艺无关性。这使得工程师在功 能设计、逻辑验证阶段,可以不必过多考虑门级及工艺实现的具体细节,只需要 利用系统设计时对芯片的要求,施加不同的约束条件,即可设计出实际电路。实 际上这是利用了计算机的巨大能力并在EDA工具的帮助下,把逻辑验证与具体 工艺库匹配、布线及时延计算分成不同的阶段来实现,从而减轻了人们的烦琐劳

北京化工大学硕士学位论文

动。
2.3

FPGA开发流程
一般FPGA的开发大体有如下几个步骤【15l: 设计输入一>功能仿真一>代码综合一>实现一>下载。 其中最重要的显然是设计部分,因为产品的功能就是在设计上体现出来的;

而仿真主要针对设计,采用EDA工具进行波形仿真,只有波形仿真通过才能说 明设计的正确性与合理性;综合主要是将用HDL语言所作的硬件描述对应到FP GA芯片上的单位逻辑电路上;实现是将综合后生成的逻辑网表与具体的FPGA

相适配;最终生成的位流文件通过某种下载途径下载到FPGA中。

北京化工大学硕士学位论文

第三章

串并行通信协议总体设计与通信协议分析

3.1异步串行通信协议
3.1.1串行通信基本概念 串行通信是把传输的数据一位一位地顺序传送的一种通信方式。因其需要 的数据线少、传送距离长、可靠性高而广泛用于大量的外设与计算机之间的通信,

如终端、打印机、磁盘等。但由于传送信息数据格式繁琐、传送速度慢、传送效
率低、实时性差,而无法应用于高速实时数据通信。串行通信的数据传输方式有 如下三种116】: 》单工(Simplex)方式 单工方式只允许数据按一个固定的方向传送。采用这种方式时,就已经确定 了通信方式中的一方为接收端,并且这种方式是不可改变的。 ≯半双工(Half-Duplex)方式 这种方式下的通信双方A和B都具有接收和发送能力。但通信线只有一条, 因此在特定的时刻双方只能有一个发送而另一个接收或一方接收,另一方发送。 决不允许A和B同时一接收或同时发送。 >全双工(Full—Duplex)方式 全双工具有两条独立的通信线,一条专门用作发送,另一条为接收。这就 克服了单工或半双工带来的A和B双方不能同时既发送又接收的缺点。因此,为 保证实现全双工通信任务,A和B双方的串行接口必须具备一套完全独立的发送 器和接收器。

网糊沛网 发送器r———叫
(a)单工方式



发送器



(b)半双工方式

北京化工大学硕士学位论文

(c)全双工方式 图3.1串行通信的数据传输方式 砘g玉l
鞯rial communic“on data订ansfer mode

应该指出,在实际串行通信时,双方除了具有通信用的数据线外,还必须 有公共地线,此外为保证正确高效传输,串行接口还需要提供一些状态和联络信 号,图3一l中没有画出

3.1.2异步串行通信协议

串行通信有两种基本的类型,一种是串行异步通信(简称异步通信),另一种
是串行同步通信(简称同步通信)。通信协议是对数据传送方式的规定和规范,其 中包括数据格式的定义和数据位的定义等。串行通信协议通常包括异步通信协议 和同步通信协议,这里只介绍异步通信协议。

所谓异步通信(ASlfNDC—Asynchronous

Data

Co砌unication)主要指字符与

字符之间的传送是完全异步的,而同一个字符的位与位之间是同步的。换句话说, 两个字符之间的时间间隔是不固定的,而在同一个字符中相邻位的时间间隔是固 定的【切。 异步通信有如下特点【18】: 夺字符帧的传输格式使发送方在字符之间可按应用要求插入不同的时间间隔, 即每一个字符的发送是随机的,这是异步通信的主要特点。 ◆每一个字符的传输开始总是以一个起始位为准,然后接收方与发送方保持同 步(格式的统一)。通信双方可按应用需要随时改变通信协议,即改变数据位、奇 偶校验位和停止位长度和数据传输率。 夺在异步通信的数据流中,一个字符看作一个独立的信息单元,并且字符出现 在数据流中的相对时间是任意的,接收端预先并不知道,每个字符一经发送。收 发双方则以预先固定的时钟速率传送各位。因此,要有效进行异步通信,在CPU 与外设通信之前,必须统一字符格式和波特率。 异步通信的发送方和接收方之间允许没有共同的时钟,所以在异步通信中, 收发双方取得同步的方法是采用在字符格式中设置起始位和停止位的办法。每一 个字符传输开始总是以一个起始位为准,然后接收方和发送方保持同步。异步通 信的格式如图3—2
119I。

北京化工大学硕士学位论文

艚一 牢行


—一…●1
DO Dl O

一 后一? 字符 l
I I O

D2~一口n—l

o,Il

o,I

l o,l

—Io,I I o/lj






付,

n位缸搬‘n。5—8’

霎要釜









图3?2异步通信格式
n蛋3.2

AsyⅡc呐nous da£a communication f0咖at
Data

从图中可以看出,串行异步通信的字符格式包括四个部分:起始位、数据位、
校验位和停止位。Asynchronous

1.起始位在一个字符中占1位,该位必须为0,表示一个字符的开始。
2.起始位之后是数据位,至少5位,最多为8位,由串行通信初始化程序设定。

数据的排列方式是低位在前,高位在后。
3.校验位排在有效数据位的后面,占1位,根据需要可选,可不选。奇偶校验

用于有限差错检测。如果选择奇校验,则组成数据位和校验位的逻辑1的个
数必须是奇数,否则传送出错(奇校验错):选择偶校验,则组成数据位和校 验位的逻辑1的个数必须是偶数,否则传送出错(偶校验错)。

4.一个字符的最后是停止位,在没有校验位的情况下,它紧跟有效的数据位,
如果有校验位,则在校验位后面是停止位。停止位必须存在,表示一个字符 的结束。停止位可以为1位、1.5位或2位,由编程决定。 异步通信的这种由起始位开始,停止位结束所构成的一串二进制数称为帧 (一个完整的字符)。从微观上看异步通信是一位一位传送,而从宏观上看,它又 是一帧一帧传送的。一帧数据中的相邻位之间的时间间隔是相同的,而帧与帧之 间的时间间隔又是随机的,即帧与帧之间可以有若干个空闲位。在没有数据传输 期间,串行数据线上是逻辑高电平。

3.2并行通信协议分析
3.2.1并行通信基本概念

并行通信是指将一个字节或~个字的各位同时进行传输的一种通信方式,它 采用多根数据线并行传送信息,不要求有固定的格式,通信速度快,传输的信息 率高,适合于近距离、高速信息传送【圳。 实现并行通信的接口称为并行通信接口,简称并行接口。一个通用的并行通 信接口可以设计成输入接口,如键盘或其他信息的输入:也可以设计成输出接口,

北京化工大学硕士学位论文

如打印机接口、显示器接口等,还可以设计成即可以输入又可以输出的双向通信 接口。下面简单分析一下并行接口的输入输出过程。 ?并行接口的输入过程 1.外设首先将数据送到接口,并使状态线的数据准备好呈有效状态(高电 平)。 2.数据到达接口后,接口在状态寄存器中使外设准备好状态位置位,以便 cPU查询,接口也可以向cPU发送中断请求信号。

3.接口把数据传送到内部的输入缓冲寄存器,同时使数据输入应答信号有
效,以作为对外设的响应。 4.外设收到输入数据的应答信号后,撤销数据及数据准备好信号(无效的低 电平)。 5.CPU接到接口要求输入数据的中断请求信号或查询到接口的状态位 R队DY(准备好)信号为高电平时,从并行接口的输入缓冲寄存器中读取数据。此 时接口自动清除状态寄存器响应的准备好标志位,并使数据线呈高阻状态。结束 一次输入传输过程。 ●并行接口的输出过程

1.如果cPU查询到外设己经取走数据,即接口的状态寄存器中输出准备好
状态位有效(一般为输出缓冲器空)或接口有输出数据的中断请求信号,CPU向接 口输出数据。 2.当输出的数据到达接口的输出缓冲寄存器时,接口自动清除状态寄存器 中的输出准备好标志位。 3.接口向外设发送一个驱动信号来启动外设接收数据。 4.外设收到启动信号后接收数据,并向接口发送应答信号(输出数据回答)。 表示外设己经取走数据。 5.接收到外设的应答信号,接口使状态寄存器中的输出准备好状态位重新 置位,结束本次输出操作,以便开始进行下一个数据的输出。

3.3本课题设计难点
在本论文的研究中,有如下设计难点: 1、在每一个设计模块当中,没有统一的时钟脉冲信号,状态变化的时刻是不固 定的,通常输入信号只有在电路处于稳定状态时才发生变化。也就是说,一个时 刻仅允许~个输入发生变化,以避免输入信号之间造成的竞争冒险现象。在设计

北京化工大学颈士学位论文

和使用时序电路时,必须考虑到器件的传输延时,注意竞争冒险问题,注意由于 时钟偏移造成的冒险。 2、设计过程中,根据理论分析,如果各个模块的复位信号频率存在偏差,将使 得输入输出之间的信号,不能正常完成转换,同时,虽然各个模块在单独工作的

情况下,均能完成各自的功能,但如果将模块合成,就可能出现各种意想不到的
问题, 3、对于CRc校验用于异步串行通信的方法,有关软件处理流程的资料很少。并 且其接口时序涉及软硬件的协同操作以及软件硬件控制的相互转换,因此是本设 计的一大技术难点。 4、传统设计过程中,cRc通常应用于同步串行通信,至于在异步串行通信中的 应用,其是否可行,还有待进一步分析。

北京化工大学硕士学位论文

第四章

通用异步收发器(uAflT)的
设计与实现

4.1

FPGA的设计方法及使用软件
传统的设计手段是采用原理图输入的方式进行的,如图4.1【”】。十几年前,

当时所做的复杂数字逻辑电路及系统的设计规模比较小也比较简单,其中所用到 的FPGA或AsIc设计工作往往只能采用厂家提供的专用电路图输入工具来进 行。为了满足设计性能指标,工程师往往需要花费好几天或更长时间进行艰苦的 手工布线。工程师还得非常熟悉所选器件的内部结构和外部引线特点,才能达到 设计要求。这种低水平的设计方法大大延长了设计周期。

图4-1原理图输入法
Fj昏4-l Schematic i11put diagram

但是,设计人员不可能在刚开始的时候,就已清楚地知道本次工程采用哪

一个FPG~CPLD厂商的哪一特定型号器件,而设计往往是从功能描述开始的。
设计人员首先要考虑规划出能完成某一具体功能、满足自己产品系统设计要求的 某一功能模块,利用某种方式(如HDL硬件描述语言)把功能描述出来,通过功 能仿真(HDL仿真器)以验证设计思路的正确性。当所设计功能满足需要时,再考 虑以何种方式(即逻辑综合过程)完成所需要的设计,井能直接使用功能定义的描

述。这就是自顶而下(T0p—Down)的设计方法(见图4.2)吲。

19

北京化工大学硬士学位论文

图4.2

自顶而下cI.op-Dawn)的设计方法

啦小2 1睁Down desi印me也od
本次实验,逻辑设计所使用的软件为)(ili蕊公司的IsE6.1。IsE的主要特
点【冽: >IsE是一个集成环境,可以完成整个FPGA/cPLD开发过程。IsE集成了

很多著名的FPGA/CPLD设计工具,根据设计流程合理应用这些工具,会使工程
师的设计工作如鱼得水。 >lsE界面风格简洁流畅,易学易用。IsE的界面秉承了可视化编程技术, 界面根据设计流程而组织,整个设计过程只需按照界面组织结构依次点击相应的 按钮或相应的选项即可。 》ISE有丰富的在线帮助信息,结合)【iliIlx的技术网站,一般设计过程中 可能遇到的问题都能得到很好的解决。 >强大的设计辅助功能。ISE秉承了Xilinx设计软件的强大辅助功能。在 编写代码时可以使用编写向导生成文件头和模块框架,也可使用语言模板
(IJanguage Template)帮助编写代码。在图形输入时可以使用ECS的辅助项帮

助设计原理图。另外,ISE的C0re Genemtor和L0面BLoX工具可以方便地生成
IP

core(口核)与高效模块为用户所用,大大减少了设计者的工作量,提高了

设计效率和质量。 ISE的集成工具主要分为设计输入工具、综合工具、仿真工具、实现工具和 辅助设计工具等5类。HDLEditor可以完成设计电路的HDL语言的输入,能根 据语法来彩色显示关键字;ModelSim SE做仿真,特点是仿真速度快,仿真精度 高;xsT做综合。

北京化工大学硕士学位论文

4.2通用异步收发器(u胴T)的设计与实现

U觚T(univc培al舡ynchrionous Receiver Transmitter)即通用异步收发器。是
一种应用广泛的短距离串行传输接口。往往用于短距离、低速、低成本的微机与 下位机的通讯中。8250,8251,NSl6450等芯片都是常见的uART器件。这类芯 片有些已经做得相当复杂,含有许多辅助的模块,比如FⅡO。在本节里仅讨论 最基本的uART,其实也是最常用的。

4.2.1基本的u^RT帧格式渊

基本的uART只需要两条信号线CIxD.R)口D)就可以完成数据的相互通信,

接收与发送是互不干扰,也就是全双工的,这样就大大降低了传送费用。但要求 在D①,∞①制定一定的规则,以使接收、发送之间协调一致。基本的IIART 帧格式包括起始位、数据位、校验位和停止位四部分。
以下介绍涉及到的uART概念: 1.在信号线上共有两种状态,可分别用逻辑1和逻辑O来区分。在发送器空闲时,

数据线应该保持在逻辑1状态。
2.起始位(Stan Bit)。发送器是通过发送起始位而开始一个字符的传送,起始位使 数据线处于逻辑0状态,提示接收器数据传输即将开始。

3擞据位pata BjtS)。起始位之后就是传送数据位。数据位一般为一个字节的数

据(也有6位、7位的情况),低位∞B)在前,高位(MsB)在后。
4.校验位(Parity Bit)。可以认为是一个特殊的数据位。校验位一般用来判断接收 的数据位有无错误,一般是奇偶校验。本实验中,被由于采用CRC校验方式, 因此该位取消。 5.停止位。停止位在最后,用以标志一个字符传送的结束,它对应于逻辑1状态。 6.位时间。即每个位的时间宽度。起始位、数据位、校验位的宽度是一致的,停 止位有O.5位、1位、1.5位格式,一般为1位。 7.帧。从起始位开始到停止位结束的时间间隔称之为一帧。 8.波特率。uART的传送速率,用于说明数据传送的快慢。在串行通信中,数据 是按位进行传送的,因此传送速率用每秒钟传送数据位的数目来表示,称之为波 特率,如波特率9600=9600bps(位,秒)。

北京化工大学硕士学位论文

4.2.2硬件设计

在实验中,为了方便硬件调试,硬件设计中使用了RsL RDN和wRN三个

按键输入,分别实现u触玎复位、接收数据启动和发送数据启动功能。图4-3是

uA盯的结构简酬251。
Xiljnx

XC3S10∞.4FG320
P TXD C RXD GND

三匡E
图4-3

州011
P1012

P1013

Ca帕

P1014


P1015

INl

IIART的结构简图
stmcnlre dia璺am

F.雩—”uART

本次实验的内部逻辑系统的设计采用了层次化设计的方法。所谓层次化设 计的方法是指将一个模块分为若干个子模块,层次化设计就是将一个系统划分成 一系列子模块来设计的方法,模块的功能也要求明确的方式定义。模块化设计一 方面有助于多个设计人员间的相互合作,另一方面也便于查找出出错模块的错误

所在,便于修改、维护。
模块合成就是把收发模块、CRc校验模块的对应端口连接在一起,并给 uART设定输入输出引脚,合成后的模块如图4.4所示。 d…7:o'
cIkl6x

d眯7

o’

d●hL.r—dy

Ⅲn
rIt

rmmInq—-.~ p-rhy—o…
tbr● t■re b‘d

rxd

~n

图4-4

uART的收发模块结构图

Fig.4.4 UART Transm“and Re∞ive stmctural dia伊am

?8位并行数据从输入端din输入,转换为串行数据输出,每个输出的数据

北京化工大学硬士学位论文

串都有固定的结构,0)oc)cI【Ⅺ。【x1,其中,第一个0表示开始,随后8个x表
示由并行数据转换得到的串行数据,最后用1表示整个数据串的结束。 ?tSre是表示并串转换过程的标志:在并串转换开始时变为O,并在燕个转 换过程中保持为0;在转换结束后变为1,并在没有数据转换时保持为1。

?tbre时表示整个工作过程的标志:数据开始从输入端输入时曲e变为O, 并在整个工作过程中保持为1;串行数据全部输出完毕后变为0,并在发送器耒
工作时保持为0。 ●rst时系统复位输入端。 ●dkl6x是系统时钟信号输入端。

●帆是指示系统是否可以转换并行数据的指示输入端口,wm为上升沿时
开始转换数据。 ?从rxd端输入的是前面提到的串行数据串O)。()。Ⅸ)c}(x1,接收端从检测

到数据串的第一个0开始工作,然后把随后依次输入的8个数通过移位的方法在
寄存器塔r内完成串并转换,并通过检测数据串的第最后一个数据是否为1来判

断接收到的整个数据串是否出错,如果不为1,就将输出曲ming enor置为1。
?rdⅡ是输出控制端,只有当rdn为1时,并行数据才被送到dout端输出。
●data

r%dy表示“数据已准备好”,在r血不为0的情况下,串并转换完

成后将此dataJeady置1以表示数据已经转换完毕,可以输出了。

e唧在本设计中省略,用CRC取代。 ?丘aIⅡi珏g』咖在系统复位时被置0,串并转换完成后检查收到的数据串的
?parity

最后一位是不是1,如果不是l,就把触ming e“Dr置1。

图4.5

IJART的生成ECs图

Fig.4-S UART ECS diagram

23

北京化工大学硕士学位论文

4.2.3功能模块的实现

1.设计思路 uART处理的是并行数据转为串行信号和串行转为并行,但不是简单的转 换。因为现有的时钟是不精确的,这会导致很多麻烦。uAl玎发送部分的用途是 将准备输出的并行数据,按照基本I rAI盯帧格式,转为D①信号串行输出,这 里串行化时的时钟信号只要使用对应要求波特率的本地时钟即可。uART接收部

分接收耵①串行信号,并将其转化为并行数据,但串并转换的时钟显然同发送
器一样处理,收发设备间的时钟误差是会累计的,会导致接收数据不正确。这就 需要用一个远远高于波特率的本地时钟信号对输入信号I区D不断地采样,以不 断地让接收器与发送器保持同步。在设计中采用只有波特率时钟周期的1/16的

时钟信号,用一个波特率发生器专门产生。图4.6是基本u触盯的帧时序图l冽。

飞叵更王丑口三正卫Ⅱ丑二F
.迁——棚门.nnn九肌rL几.几八八几,n
I I 目 l

共l‘个∞【^簖吨

—t箭一



k.n

ll十唧cn,蝰测采样











图4-6基本u蠊T的帧时序图
Fjg.4.6

B拈ic UAl玎台ame timing diagmm

2.信号定义 根据实际接口情况,在模块中定义了CLK,RST’、ⅣRN,RDN,TXD和RXD 几个信号,其功能分别介绍如下:

cu(为同步时钟;RsT是系统复位信号;wIm是UAI玎发送数据启动信 号;RDN是uART接收数据启动信号;盯①是uART向外发送的串行数据位;RxD
是uART从其他设备接收到的串行数据位。 3.功能模块 在整体设计中,采用了模块设计的方法,并且针对实际要求,将整个软件 划分为波特率发生器模块、接收启动模块、接收模块和发送模块四个部分。各模 块功能分析如下: ①波特率发生器模块 波特率发生器实际上就是一个简单的分频器。可以根据给定的系统时钟频 率(晶振时钟)和要求的波特率算出波特率分频因子。已算出的波特率分频因子作

为分频器的分频数。对于波特率发生器的系数一般在即GA实现时往往是固定的

北京化工大学硕士学位论文

f同uART专用芯片不同,FPGA具有设计的易改性,而专用芯片不易改动,所

以u越盯专用芯片中还需要加上复杂接口以便在使用时改变波特率),但对于不
同的实现,这个系数需要更改。在verilog HDL语言中使用p跚衄eter语句,或

在ⅥⅢL语言中使用G叻eric语句都可使问题获得两全其美的解决。波特率发生
器产生的分频时钟,不是波特率时钟,而是波特率时钟频率的16倍,目的是为 了在接收时进行精确地采样,以提取异步的串行数据。波特率发生器模块如图 4.7所示。CIx是时钟输入信号,在实验中选择的是11.0592MHz的时钟源:RsT 是系统复位信号:CLKl6x是波特率发生器得到的分频时钟。在程序中,选择的 波特率为9600bps,分频因子的计算方法如下:分频因子=11059200/ (9600x16x2)。

cIk

cIkl6x

rSI

图4.7波特率发生器模块 ng.4-7 B¨d
rale

g%erator modllle

波特率发生器模块生成的原理图如图4.8所示。

图418

波特率发生器原理图(Ecs)
Baud『aIe geneIaIor ECS

Fig.4-8

编写波特率发生器仿真测试程序(见附录),在Modelsim【27】,【28l环境下进行

北京化工大学碗士学位论文

仿真,得到如图4.9所示的仿真波形,从图中我们可以看出,rst作为复位信号,

在高电平时有效,clk作为系统时钟,c11【16x是波特率发生器的16分频时钟。

圈4.9波特率发生器仿真波形
Fig.4-9 B蛐d船te genemtor mOdule simulatcd waVe

②接收启动模块【冽 由于串行数据帧和接收时钟是异步的,由逻辑1转化为逻辑O可以被视为 一个数据帧的起始位。然而,为了避免毛刺影响,能够得到正确的起始位信号, 必须要求接收到的起始位在波特率时钟采样的过程中至少有一半都是属于逻辑O
才可以认定接收到的是起始位。由于内部采样时钟cLKl6x(波特率发生器产生)

是发送或接收波特率时钟频率的16倍,所以起始位需要至少8个连续CIⅨ16x 周期的逻辑O被接收到,才认为起始位接收到,接着CRc校验位将每隔16个
Bcu(周期被采样一次(即每一个波特率时钟被采样一次)。RsT是系统复位信号;

cLKl6x是由波特率发生器产生的分频时钟;R)①是来自其他设备的串行数据,
如PC机;RDN是UAIH接收数据的启动信号。 ⑧接收模块 接收模块如图4.10所示。RST是系统复位信号:cLKl6x是由波特率发生 器产生的分频时钟;RxD是来自其他设备的串行数据;D阉除RD~DY表示“数据 已准备好”,在RDN为1的情况下,并行数据转换完毕就可以输出,此时将 D朋隗READY置O;在RDN不为O的情况下,串并转换完成后将此 D朋rA READY置1以表示数据已经转换完毕,可以输出了,通知接收模块每隔 16个cIKl6x周期采样一次,接收uART帧中剩余的数据位,否则,接收模块不 工作:DOuT[7:O】是接收模块将接收到的串行数据转换成的并行数据,送给发送模 块的输入信号DlN[7:01。

北京化工大学硕士学位论文

clkl6x

dc^脚加

Tdn出由L"ody

r畸f舟minL—Tor

喇pa麻y__.n斟

图4.10接收模块 ng.4.10
Received module

端口定义如表4.1所示。
袭4.1接收部分端口说明

nbk 4?l Re∞ived
端口
clkl6x rdIl
rst

pan

poft麟planation 方向 输入 输入 输入 输入 输出 说明 时钟 转换允许信号 全局复位信号 输入数据 输出的数据 标志信号 错误标志

宽度
1 1 1 1 8 1 1

rxd dout dat最—ready Framing_error Parity—-error

输出
输出 省略

④发送模块 发送模块相对于接收模块要容易处理得多。只要每隔16个cLKl6x周期输 出1位即可,次序遵循1位起始位,8位数据位,1位停止位1301。在本设计中没

有校验位。发送模块如图4—11所示。RsT'cIⅨ16x信号同接收模块;D矾【7:0】是 将要发送出去的并行数据;wRN是数据发送的启动信号;D①是发送出去的串行
数据信号。
dn町O'
cIkl瓢 tbm

nBt^D-d●h
n口



wm饥d

图4.11发送模块
Fig.4?11 TransmjIted module

北京化工大学硕士学位论文

端口定义如表4.2所示。
表4.2发送部分端口说明
ThMe 4-2
TnnsfnitIed part port

explanad∞ 说明 时钟 转换允许信号 全局复位信号 输入数据 数据存入寄存器信号 输出的数据 并串转换标志信号 工作过程的标志

端口
clkl6x

宽度
l l l l data l 8 1 1

方向 输入 输入 输入 输入 输入 输出 输出 输出

Wn
rst

din nGet AD txd tbre
tsre

4.3

FPGA串行通信接口模块的仿真口1】
可编程串行通信接口模块的作用主要包括:将从数据输入总线上并行接收

到的信号通过D①管脚串行发出;将R)∞管脚串行接收到的信号通过转换并行
发送到数据总线上,而这些转换模式又是受到输入的初始的模式字和控制字的控 制。仿真也分为测试发送和接收两种功能。 我们仿真所用软件为M0dclSim SE,在我们所使用的集成开发环境ISE给
ModcIsim SE仿真软件预留了接口,通过这个接口可以直接启动Modelsinl sE

工具进行仿真。 在ModelSiIn SE环境下,仿真主要的方法有编写TestBcnch和使用F0rce命

令。TestBcnch可以进行较为复杂的交互式仿真:Force命令比较适合较为简单的
模块仿真,输入的方法可以是直接从命令控制台输入,也可生成相对复杂的宏文 件【32】。 整个串行通信接口模块较为复杂,我们用vemog语言编写了相应的 TestBench进行仿真,虽然用vem02语言编写的测试程序比较复杂,但可以灵活 地设置更多的输入组合,可以随时添加测试数据。即使面对很复杂的被测模块, 也能够通过精心设计测试程序实现完整的功能验证。 为了测试串行通信接口模块的发送功能,我们编写了相应的TestBench。得到 的相应的仿真图。 所进行的仿真的步骤如下: 向发送模块写入要传送的数据“10111010”和“01001001”。 仿真的波形如图4—12所示,在从数据总线din上读到信号后,当 nGeLAD—data在下降沿时,将数据存入寄存器rSf,当允许写数据信号wrn上升

北京化工大学硬士学位论文

沿进行数据转换,这表明模块可以发送数据了,然后瞧d引脚上则相继输出信号, 输出的t】【d对应仿真图形的“10111010”和“01001001”相应的由并行信号转换, 而来的串行信号。


模块接收功能测试的过程与发送功能测试相类似。 其具体步骤如下: 1)通过数据总线写入模式字”111110n”和“o0010111”(含义如上所述)。 2)在允许转换信号rdn上升沿时开始转换数据,紧接着接收到的8位信号分 别为“11111011”和“00010111”,从图4.13可知:数据总线上输出的由串行信号 转换而来的信号为“11111011”和“00010111”而来的并行信号。 3)当允许转换信号rdn高电平不足8个cll【16x周期时,r】【d的8位信号不 能完全转换,只能在周期数的范围内转换,输出的串行数据为红色边框,提示数 据转换无效。如图4.14所示,允许转换信号r血只有4个cll【16x周期,因此只 能输出4位串行数据,其它位由无效字符x代替。 通过上面对可编程串行通信接口模块发送和接收两方面功能的仿真,我们 认为该模块已经达到了预定的功能目标。

图4.12发送模块仿真图
Fig.4-12 Tmnsnlilted module

timing dia盯arIl

北京化工大学硕士学位论文

图4_13接收模块仿真图(1)
ng.4-13

R∞eivcdmodllle血ning diagram(1)

图4.14接收模块仿真图(2) F.g.4?14 4.4 Re∞ivedⅡlodule吐ming diagram(2)

FPG^的综合与时序验证
在完成了系统逻辑的设计和功能仿真后,我们要对所生成的Vcrilog HDL文

件进行综合,生成门级网表文件,这些文件只是一些门与或非的逻辑关系,与实 际的配置还有差距。我们需要对他们进行布局布线和时序验证,来实现芯片内部 功能单元的连接和映射【33】,【州。 综合就是在相应库的支持下,将行为级描述的电路转化到门级网表。在本次 实验中采用了)(iliIl】【公司的xsT作为系统的综合工具,虽然xsT与s)rⅡplify Pro 等业界流行的综合工具相比特点并不突出,功能也不全面,但是)(ilinx对自己的

FPG~CPLD内部结构最为了解,所以xST对)(ilinx器件的支持也最为直接,更
重要的是xsT内嵌在ISE中,安装IsE后可以直接使用,不需另外付费。 ISE中xST设计流程的综合阶段约束文件与实现阶段的约束文件的概念并

北京化工大学硕士学位论文

不分明,综合阶段的约束条件常常通过实现阶段的约束文件来完成。xST的综
合约束文件是xap【ST Ccmstmint F丑c),而布局布线阶段最重要的约束文件是用

户约束文件ucFmser

constraint

File),两者有着千丝万缕的联系,ucF几乎支持

xI:F的所有约束语言与命令。 xST的基本使用方法非常简单:在Project Navigator工程属性选项设置中指 定采用xsT或xsT Verilog如)L设计流程,然后设置综合属性参数,进行综合 即可。我们首先要设置相应的FPGA芯片,然后再选定相应的输入文件和指定输 出文件的路径,最后再指定全局约束条件,在这些工作完成后,即可开始对设计 进行综合并优化。其中对设计的约束在整个综合过程中的作用至关重要,它可以

方便控制综合、实现过程,使设计满足运行速度、引脚位置等方面的要求,可以
说约束是关系到整个FPGA实现成功与否的关键。我们采用编写约束文件并将其 导入到综合、实现工具的方法。 由于时钟信号具有高扇出的特点,所以必须给时钟加上全局缓冲器(910bal

bu疵r),另外全局缓冲器还可以减少时钟歪斜(clock skew),使得设计在布线阶段
可以更容易,并取得最佳的效果。 另外,在器件结构允许的情况下,即器件提供全局缓冲器足够多的时候,应 该给高扇出的信号也加上全局缓冲器,比如系统复位信号等,以增加其驱动能力。 另外,对端口的约束也有利于PcB图的完成。 对于数字电路来说,提高工作频率也是非常重要的,因为高工作频率意味 着高处理能力。但由于本次实验的频率不是太高,所以我们约束频率缺省,这是 因为时钟频率较低时,不加约束自动综合也能达到要求。在这个设置下,综合工 具往往会追求最小面积(消耗最少的门电路)。 附加约束的方法有很多,常用的有直接编辑UCF文件、从Constraints
Editor

输入、在}玎)L代码或原理图编辑器中附加属性等,我们采用的是从constmints Editor输入的方法,其实这也在是编辑uCF文件,只是提供了图形化界面,方 便了使用者。 我们的仿真工具)(sT通过对不同型号的)(ilinx FPGA芯片分别进行综合。 通过对不同器件综合结果的比较,以及综合考虑了不同器件的价格,购买周期等 因素。我们初步选择了Spartan III系列。 SDanan.III系列【35】是xiliIl】【公司为那些需要大容量、低价格电子应用的用 户而设计的。该系列8种FPGA密度从5万到500万门。Spartall一III系列是在 SDartaIl—IⅢ成功的基础上通过增加逻辑资源、增加内部RAM容量、增加I/O引 脚数量、增强时钟管理功能以及增强总体性能来实现的。很多增强的功能都来自 于Ⅵnex.II技术。这些结合了先进处理技术的改进,使得spanafl—lll的性价比超

北京化工大学硬士学位论文

出以前所能达到的水平,也为可编程逻辑工业提供了新的标准。由于异常的低价,
S阳rtan.IⅡ可广泛地应用于各种电子设计,包括宽带接入、家庭网络、投影电视、 数字电视。spanan.III还是替代ASIC的更佳选择。不同于通常的AsIc,FPGA

减少了初期成本并缩短了开发周期。
spanan—III系列FPGA结构包括5个基本的可编程功能单元:(1)可编程

逻辑块;(2)输入/输出模块;(3)Block

m蝴模块;(4)乘法器模块;(5)数

字时钟管理模块。该系列FPGA有丰富的连线和开关网络,这些网络用来连接5 个功能单元并在它们之间传输数据。每个功能单元有一个开关矩阵实现多点连 接。

在spanaⅡ一Ⅲ系列FPGA提供了对时钟的频率、相移和偏移的灵活、完全
的控制。DCM模块是使用延时锁定环路(Delay.Locked LD0p,DDL)实现这个 功能。在Span观.Ⅲ系列产品中,与每个全局时钟输入缓冲器相连有一个全数字

式的延迟镇相环(DI工)。Du,可使时钟输入信号与整个芯片内部的对钟输入引

脚之间的偏差减少到最小。每个Du可以驱动两个全局时钟网络。Du。控制输
入时钟、分布的时钟可以自动调整时钟的延迟。该闭环系统确保时钟边沿到达内 部触发器与其到输入引脚同步,有效地消除了时钟分配时的延迟。除此之外, DLL还提供了先进的多时钟控制。DLL可使时钟信号倍频,也可将时钟信号1.5,
2, 2.5,3.4,5, 8,

16分频输出。为了保证在芯片配置之后,FPGA启

动之前得到正确的系统时钟,Du。可以在锁定正确时钟之前,延迟芯片配置的
实现原理。 在针对器件xC3S1000一4FG320的综合完成后,结果没有时序违反,也没有 错误以及严重的警告信息,得到如下综合结果: Started process”SyIltllesiz—
HDLCom口iIa哦m


::=

compiling
No

source

file”P—s.v”

Modu】e<P-s>compjled
errors

in∞mpil撕∞

Analysis

0ffile<P_s.p驴succeeded.

+HDLAⅡalysis’

===一一一
Analy2ing top module<P—s>.

Module<P_S>{s c。Ⅱ℃c£for syntbes泌

北京化工大学硕士学位论文

’卸DLS”tbesis+

O叫mizing unit(P_s>…

L∞d她devi∞for application‰劬m
MappiDg
all

file

f3s1000.nph。in enVimnment

C:脚li艇.

eq∞dons… 100(+5)on
block

BllildiⅡg aⅡd optimizing final nenist… Found areaconstraillt ratio of

P』,

扯tual rati0 is 0.

Minim岫period: 1.109ns似“i咖m Frequency: M缸i咖m inpllt a曲al tillle befl)m dock. 0.黯1ns

901.713Ⅻz)

Ma洳啪oucput rcquircdⅡm af【H cM【:6.397ns
M缸iIn叩1 c咖出血ational
palh delay:

№patll

foIIlld

C0mple刚岬”Synth髂ize”.
括sTA(Static蛐gAnalysis)和后仿真。在后仿真中将布局布线的时延反标到设
计中去,使仿真既包含门延时,又包含线延时信息。这种后仿真是最准确的仿真, 能较好地反映芯片的实际工作情况。仿真工具与综合前仿真工具相同。我们本次 实验主要根据静态时序分析(Static rI缸ingA-Ⅱalysis)。 综合结束后,我们的工作进入了实现阶段。 实现的流程大体可分为以下几个阶段【蚓:编译规划、布局布线、程序比特 流文件的产生。 设计实现窗口的第一步是编译,合并所有的输入网表。下一步是规划映射。 进行门级最优化的分析以及删除在合并的NGD(Native
Generic

完成上面的工作后,我们要进行时序验证。时序验证的方法的主要方法包

Database)网表中

没用的逻辑。这一步也是逻辑资源的规划映射,把设计中的逻辑布局和目标器件 硅片上的资源进行映射性规划,并检查物理设计规则。 规划映射完FPGA设计之后,就是布局和布线。在布局步骤中,主要在于 把整个的逻辑块,包括逻辑配置块(CLB)和输入/输出块(IOB)分配到电路片土的 特定位置上去。如果在部分的逻辑元件中放置了时序约束,那么布局器就会通过 移动相应的逻辑块使它们靠近,以满足它们的约束。 在布线阶段中,把逻辑网络分配到电路片中与逻辑元胞互连的物理线段卜 去。如果在部分的逻辑元件中放置了时序约束,那么布线器就会尝试选项择快速 的连接以满足它们的约束。

北京化工大学硕士学位论文

在FPGA设计实现后产生了一系列的报告文件,这些文件可以帮助我们了

解设计实现过程中的有关的信息。其中包括时序分析报告,我们通过检查时序报
告、根据工具的提示找出不满足setup/l101d time的路径,以及不符合约束的路径, 这个过程就是S.I’A。这些文件可以帮助我们了解设计实现过程中的有关的信息。 通过设计实现,我们得到了可以下载到FPGA芯片中去的程序比特流文件 (设计名.bit)。

4.5循环码
循环码是线性分组码的一个重要子集,是目前研究得最成熟的一类码。它 有许多特殊的代数性质,这些性质有助于按所要求的纠错能力系统地构造这类 码,且易于实现;同时循环码的性能也较好,具有较强的检错和纠错能力【轫。

4.5.1循环码的特点嗍
就是码字的循环特性,所谓循环特性是指:循环码中任一许用码组经过循 环移位后,所得到的码组仍然是许用码组。若(口。。d一句…4l 40)为一循环

码组,则(4柚如4…40 4“)、(口-弓口“…4¨q_)、……还是许用码组。
也就是说,不论是左移还是右移,也不论移多少位,仍然是许用的循环码组。表 4—3给出了一种(7,3)循环码的全部码字。由此表可以直观地看出这种码的循 环特性。例如,表中的第2码字向右移一位,即得到第5码字;第6码字组向右 移一位,即得到第3码字。
表4_3(7,3)循环码的全部码字
TaMe 4.3(7’3)cyclic code expl¨a“0n


1 2 3 4

码字 信息位
a6 0 O 0 0 a5 a4 0 O l l 0 l 0 l

码字 监督位
a3 a2 a1 a0 0 0 l l O 1 1 0 0 1 1 0 0 1 0 1 5 6 7 8

序号

信息位
a6 l l l l a5 a4 O 0 1 l O 1 O l a3 l 1 0 O

监督位
a2 a1 O 1 1 0 1 0 0 1 a0 1 O 1 O

为了利用代数理论研究循环码,可以将码组用代数多项式来表示,这个多 项式被称为码多项式,对于许用循环码一=(4一吒一,…a-40),可以将它的 码多项式表示为:

北京化工大学硕士学位论文

J哇《xl=口卜l,4+口卜2x。一2+…+dlx+do(4.1)

对于二进制码组,多项式的每个系数不是O就是1,z仅是码元位置的标志。 因此,这里并不关心J的取值。而表4—3中的任一码组可以表示为:

4扛)=cz6x6+a5,+a4一+a3x3+a2x2+a1工+口o(4.2)
例如,表中的第7码字可以表示为:

与(x)=1.x6+1.x5+o.x4+o.x3+1.,+o.工+1
:≯+,+x2+1
(4.3)

在整数运算中,有模门运算。例如,在模2运算中,有1+1=2;O(模2),1+2 =3=1(模2),2×3=6=0(模2)等。因此,若一个整数m可以表示为: 兰.Q+里
甩 胆

P<丹。黾整数

(4—4)

则在模疗运算下,有脚=p(模力),也就是说,在模门运算下,一整数皿等于 其被门除所得的余数。 在码多项式运算中也有类似的按模运算法则。若一任意多项式尺曲被一个刀 次多项式似曲除,得到商式口(力和一个次数小于刀的余式斤(亩,也就是:

型:醣1+掣
ⅣIxl。

Ⅳ《x1

(4—5)

则可以写为:尺0=斤(曲(模似曲)。 这时,码多项式系数仍按模2运算,即只取值O和l,假设:计算一十,+1除以 ,+1的值可得:
x4+x2+1 x3+1 x2+x+1 x3+1

(4—6)

注意,在f:述运算中,由于是模2运算.因此,加法和减法足等价的,在式子 中通常用加法运算符,具体模2运算的规则定义如表4—4所示:

北京化工大学硕士学位论文

袭4-4模2运算的规则定义

nbIe 4_4

module 2

ope州∞mle defiIlid∞
l+O=l 1×O=O




码 模2乘

o+o:d
O×O=0

o+1:l 0×l=0

l+1:J
l×1=l

这样式(4—6)也可以表示为:

x4+x2+1三x2+x+1

恒≯+,)

(4.7)

在循环码中,若A(x)是一个长为n的许用码组,则一‘以pJ在按模妒+1运算下,

亦是一个许用码组,也就是假如:x』?月(司三』b)(模,+1),可以证明以I再)亦是
一个许用码组,并且,爿lzJ正是A(x)代表的码组向左循环移位i次的结果。例如, 由式(4—3)表示的循环码,其码长n=7,现给定i=3,则:

≯?坞仁)=尹?舻+≯+妒、+1净p+《+≯+≯)
:p+,+x2+x}l钕7+1I
其对应的码组为0101llO,它正是表4—1中第3码字。

(4-8)

通过上述分析和演算可以得到了一个重要的结论:一个长度为打的循环码,它

必为按模(妒+1)运算的一个余式。

4.5.2循环码的生成多项式和生成矩阵

(全O码字除外)称为生成多项式,用甙x)表示。可以证明生成多项式g(x)具 有以下特性: (1)甙x)是一个常数项为1的r-n-k次多项式;

(2)g(x)是∥+1的一个因式:
(3)该循环码中其它码多项式都是g(x)的倍式。 为了保证构成的生成矩阵G的各行线性不相关,通常用g(x)来构造生成矩阵,这 时,生成矩阵G(x)可以表示成为: z“百x) x“.∥x)
Gfxl=


g‘xl gixl

(4—9)

北京化工大学硕士学位论文

其中gh)=工7+4一?,-1+…+dlx+1,因此,一旦生成多项式90)确定以后, 该循环码的生成矩阵就可以确定,进而该循环码的所有码字就可以确定。显然,式
Q J形式,所以此生成矩阵不是典型形式,不过,可以通过简

(4-8)不符合G。k

单的代数变换将它变成典型矩阵。 现在以表4—1的(7,3)循环码为例,来构造它的生成矩阵和生成多项式, 这个循环码主要参数为,^=7,七=3,r=4。从表中可以看到,其生成多项式可以 用第1码字构造:

g(司=^b)=一+x2+x+1

(4.10)

d习=

≯吕湖 醒扛)I. gB)l
r1
0 l o l o 1









≯,x

斗4

—0¨ ≯誓¨ + ≯呵●
斗2
1●●●●●●●●_1

(4.11)
I I o l l 1

G—I



【o

在上面的例子中,是利用表4—1给出的(7,3)循环码的所有码字,构造了它 的生成多项式和生成矩阵。但在实际循环码设计过程中,通常只给出码长和信息位 数,这就需要设计生成多项式和生成矩阵,这时可以利用g(曲所具有基本特性进行 设计。

首先,生成多项式g(神是妒+1的一个因式,其次g(曲是一个,次因式。因此, 就可以先对∥+1进行因式分解,找到它的,次因式。下面仍以(7,3)循环码为
例进行分析。 第一步:对x。+l进行因式分解得:

z7+1=扛+1)仁3+≯+1J k3+x+1J
第二步:构造生成多项式g(z)

(4—12)

为了求(7,3)循环码的生成多项式g(曲,要从式(4 12)中找到r=n—k次的 因子。不难看出,这样的因子有两个,即:

仁+,).k:+工:+,):za+z:+x+, b+t).k,+x+1):x4+产+z2+,

(4—13)

(4-14)

以上两式都口,作为生成多项式用。不过,选用的生成多项式不同,产生出的循

北京化工大学硕士学位论文

环码码组就不同。用式(4.13)作为生成多项式产生的循环码即为表4-1所列。 当然,在利用式(4,11)得到生成矩阵G以后,可以通过线性变化,使之成为 典型矩阵,得到监督矩阵H。 除此之外,还可以利用循环码的特点来确定监督矩阵H?

由于(n,k)循环码中g(x)是妒+1的因式,因此可令:

荆=貉。唯一妒。+..-+"1
示为:

(4.15)

这里h(x)称为监督多项式。与式(4—9)所表示的G(x)相对应,监督矩阵表

,矿 一一 矿矿

日仁)=

(4-16)

砌矿
其中向+扛琏^∞逆多项式。

善;嚣 州叫—■ ㈤曲

向’仁)=≯+魄≯一1+,毪x。一2+…+k—lx+1(4—17)

对于表4一l中的(7,3)循环码,吕B)=x4+≯+x2+1,则:

出)=貉=p。+1
x6+x4+x3]

j雌)。…1
1 0 1 O O 1 O 1 0 1 1 0 1 0 1 1 O O 0 1 1 0 0 0
,,



日扛)=

x5+≯+x2 一+,+x ,+工+1





j爿2

4.5.3循环码的编、译码方法

1编码过程【391
在编码时,首先需要根据给定循环码的参数确定生成多项式g(x),也就是从

,+1的因子中选一个(n—k)次多项式作为g(x);然后,利用循环码的编码特点,
即所有循环码多项式A(x)都可以被g(x)整除,来定义生成多项式g(x)。

北京化工大学硬士学位论文

根据上述原理可以得到一个较简单的系统循环码编码方法:设要产生(n,k)

循环码,m∞表示信息多项式,则其次数必小于k,而x一?m(x)的次数必小于n,
用x’‘-m(x)除以g(x),可得余数r(x),r(x)的次数必小于(n-k),将r(x)加到信息位 后作监督位,就得到了系统循环码。下面就将以上各步处理加以解释。 (1)用石“5乘m(x)。这一运算实际上是把信息码后附加上(n—k)个“0”。例

如,信息码为110,它相当于m(x)=工1+x。当n-k=7-3=4时,工~?m(x)=r+ 再’,它相当于1100000。而希望的到得系统循环码多项式应当是A(x)=x~-m(x)

+电)。

躺删=学=销+器
错删+高
(3)编码输出系统循环码多项式爿(神为:

(2)求r(x)。由于循环码多项式A(x)都可以被g(x)整除,也就是:

件功

因此,用xI-‘.盈(D除以譬(峦,就得到商p(弗和余式r(力,即

∽∞

这样就得到了,(亩。

雌)=P~.卅(z)+如)

(4—21)

例如,对于(7,3)循环码,若选用g扛)=x4+x2+x+1,信息码110时,
则:

掣=£亳=P…,卜≤‰
上式相当于:



型。1ll+里坠
1叭11 l叭ll

北京化工大学硕士学位论文

这时的编码输出为:1100101。

上述三步编码过程,在硬件实现时,可以利用除法电路来实现。这里的除法电
路采用一些移位寄存器和模2加法器来构成。下面将以(7,3)循环码为例,来说明

其具体实现过程。设该(7,3)循环码的生成多项式为:g(习=一+x2+x+1,则
构成的系统循环码编码器如图4.15所示【柏1.。

图4—15(7,3)循环码编码器 Fig.4-15(7,3)cyclic∞der

图中有4个移位寄存器,一个双刀双掷开关。当信息位输入时,开关位置接“2”。 输入的信息码一方面送到除法器进行运算,一方面直接输出;当信息位全部输出后,
开关位置接“1”,这时输出端接到移位寄存器的输出,这时除法的余项,也就是监 督位依次输出。当信息码为110时,编码器的工作过程如表4—5:

表4_5编码器工作过程

nMe 4.5 输入(m)
O i 1 0 0 0 0 0

coder nlnning

course

移位寄存器(abcd)
0 O 0 1 O


反馈(c)
0 l 1 1 O 1 O 1

输出(f)
O 1 1 O 0 1 0 1

O O 1 O 1 0 1 0

】1 1 1 0 0 O 0 O O 1 O O 0

0 l O 0

2.译码过程 对于接收端译码的要求通常有两个:检错与纠错。达到检错目的的译码十分简 单,可以由式(4—19),通过判断接收到的码组多项式B(x)是否能被生成多项式g(x) 整除作为依据。当传输中未发生错误时,也就是接收的码组与发送的码组相同,即

A(x)=B(x),则接收的码组B(x)必能被g(x)整除:若传输中发生了错误,则舢x)≠B(x),
B(x)不能被g(x)整除。因此,可以根据余项是否为零来判断码组中有无错码。

北京化工大学硕士学位论文

需要指出的是,有错码的接收码组也有可能被g(x)整除,这时的错码就不能检 出了。这种错误被称为不可检错误,不可检错误中的错码数必将超过这种编码的检 错能力。 在接收端为纠错而采用的译码方法自然比检错要复杂许多,因此,对纠错码的 研究大都集中在译码算法上。我们知道,校正子与错误图样之间存在某种对应关系。 如同其它线性分组码,循环码的译码可以分三步进行: (1)由接收到的码多项式B(x)计算校正子(伴随式)多项式s(x); (2)由校正予S(x)确定错误图样E(x): (3)将错误图样E(x)与B(x)相加,纠正错误。

上述第(1)步运算和检错译码类似,也就是求解B(x)整除g(x)的余式,第(3)
步也很简单。因此,纠错码译码器的复杂性主要取决于译码过程的第(2)步。 基于错误图样识别的译码器称为梅吉特译码器,它的原理图如图4—16所示。错 误图样识别器是一个具有(n.k)个输入端的逻辑电路,原则上可以采用查表的方法, 根据校正子找到错误图样,利用循环码的上述特性可以简化识别电路。梅吉特译码 器特别适合于纠正2个以下的随机独立错误。 图4-16中k级缓存器用于存储系统循环码的信息码元,模2加电路用于纠正错 误。当校正子为0时,模2加来自错误图样识别电路的输入端为0,输出缓存器的 内容;当校正子不为0时,模2加来自错误图样识别电路的输入端在第i位输出为 1,它可以使缓存器输出取补,即纠正错误。 循环码的译码方法除了梅吉特译码以外,还有捕错译码、大数逻辑译码等方法。 捕错译码是梅吉特译码的一种变形,也可以用较简单的组合逻辑电路实现,它特别 适合于纠正突发错误、单个随机错误和两个错误的码字。大数逻辑译码也称为门限 译码,这种译码方法也很简单,但它只能用于有一定结构的为数不多的大数逻辑可 译码,虽然在一般情形下,大数逻辑可译码的纠错能力和编码效率比有相同参数的 其它循环码(如BCH码)稍差,但它的译码算法和硬件比较简单,因此在实际中 有较广泛的应用。

圈4~16梅;l淳'译码器原理 Fig.4?16 Mejj
4】



encodef

北京化工大学硬士学位论文

4.6镰C校验简介
在数据通信中一般采用误码率作为通信质量的衡量标准,但是误码率是一种 整体平均的衡量,是一种长时间性能评估,不能提供对特定码元和码元组的置信 度评估,不能提供短时间内的通信质量评价14¨。一种常用的解决方法是将数据分 组传输,每组码元采用称为帧校验序列(Fcs,Frame
check

sequenoe)的差错

控制编码进行编码/解码,从而获得具体每一帧的误码性能和置信度。在帧校验

序列的实现中,循环冗余校验码(cRc,cydic Redund蛆cy
国际通信标准。常见的16位CRc多项式有两个”2J:
CRCCCⅡT

check

Code)以其高

效率、高性能获得了广泛应用,其中具有16个冗余比特的cRC编码进入了多个

g(x)=x16+x12+x5+1 =(x+1)(x15+x14+x13+x12+x4+x3+x2+x+1)
CRCANSI

(4.23)

g(x)=x16+x15+x2+土=(x+1)(x15+x+1)(4.24)
这两个多项式都由两部分组成,前部分是因式(x+1),可以提供具有差分

运算的功能,后一部分是一个周期为215.1=32767的本原多项式,可以证明两个

本原多项式的周期都是32767,即(x3册+1)mod(g(x))=0,生成多项式的组
成和周期在很大程度上决定了CRC的性能。cRc在计算机通信、网络协议、文 件压缩程序中得到了广泛的应用,而CRC码的生成可以通过硬件实现,也可以通 过软件实现。

4.6.1勰C码检错的工作原理 cRc码检错是将被处理报文的比特序列当作一个二进制多项式A(x)的系 数,该系数除以发送方和接收方预先约定好的生成多项式g(x)后,将求得的余数 P(x)作为CRc校验码附加到原始的报文上,并一起发给接收方。接收方用同样

的g(x)去除收到的报文B(x),如果余数等于p(x),则传输无误(此时A(x)和
B(x)相同);否则传输过程中出错,由发送端重发,重新开始cRc校验,直到 无误为止一…。

上述校验过程中有几点需注意:①在进行cRc计算时,采用二进制(模2)
运算法,即加法不进位,减法不借位,其本质就是两个操作数进行逻辑异或运算; ③在进行CRC计算前先将发送报文所表示的多项式Afx)乘以x“,其中n为生成 多项式颤x)的最高幂值。对二进制乘法来讲,A(x)?x“就是将A(x)左移n位,用

42

北京化工大学硕士学位论文

来存放余数p(x),所以实际发送的报文就变为A(x)?xⅡ+p(x):③生成多项式
g(x)的首位和最后一位的系数必须为1。图4—17为cRc校验的工作过程。

图4-17 cRc校验原理图
Fi94?17 CRc principle

diagr“

4.6.2

CRC码的电路实现

1.硬件电路的特点m】 为了产生cRc码,硬件电路除了具有复位和时钟信号以外,还需要以下两

个控制信号的参与:①填充位解除信号destuff,它的有效逻辑值是1;②cRc校
验的使能信号enable,有效逻辑值也为1。该硬件电路的特点是采用选择器和反 相器代替传统设计中用的异或门,既实现了比较功能,又降低了生产成本,同时 也为工程师们提供了一种新的设计思路。 2.硬件电路图 图4—18即为实现CRC码的硬件电路图。 图中需要说明的几点如下:①使能信号和填充位解除信号省略;②crcnxt 代表的逻辑值为输入报文序列和CRc寄存器的最高何片或的结果;⑧际弓0~14 所指示的为15位cRc寄存器,卜升沿触发:④标号1—6所指示的为选择器芹u反

北京化工大学硕士学位论文

相器的组合逻辑,实现异或功能,该选择器的逻辑功能为Y=AB+AC,具体结构 如图4.19所示。

图4-18 CRc码的硬件电路图 F嘻4_18
cRc hardware circuit

diagr鲫

图4_19异或门结构图
Hg.4-19 Exclusive
or

gate

diagr aⅡI

3.电路工作过程【45】

从以上分析可知:①当enable=O时,cRc清0;②当cⅡable=1、destuff=1 时,进行正常的cRc计算;③当enable=1而deStuff=O时,正在解除填充位,数
据暂停传送。 在各个控制信号均有效时,输入报文的每一位都是和CRc寄存器的最高位 相异或后移入最低位,同时寄存器的第13、9、7、6、3、2位均和其最高位异或, 结果分别左移一位;其它未进行异或操作的寄存器位值也分别左移一位,直到报

文的每一位都移入cRc寄存器为止,此时寄存器中的值即为计算得到的cRc码。
如果报文的比特序列长度为16,则需要左移16次才能对报文的每一位均进 行处理。如果以ck表示cRc寄存器的第k位位值、ck.表示移位后的第k位位值 (k=O,l,2,卜……15),则移位舰他见’是4—6。

北京化工大学硕士学位论文

表4_6 CRC编码器工作过程
.Ihble 4—6 CRC coder nlnning
course

14.-C13“彻)ct
C10’=C9^口cn斌 C6’=C5 C2’=Cl

Ci3t-12 C9’=C8 CSt-C4 Cl。=C0

C12’=C11 CF=C7^cral斌 C掣=C3^crcn)(七 00’=acrl)(t^da臼.n

C11’_C10

C_7-=C6^㈣xt
C3I=C2^crcn)(t

4.仿真波形 假设发送的是一个标准格式的远程帧,需求的数据字节为8,标识符序列为

10101011000,则对上述程序仿真后的波形如图4.20所示。CRc序列从第20位
开始输出。

图4-20 CRC码的程序仿真图 Fjg.4.20 cRC si¨lated diagr∞

cRc校验码的检错能力很强并且由于cRc码检错的软件和硬件实现都很 简单,因而被广泛地应用于各类数据校验中。cRc码检错是提高数据传输质量、

高效检错的有力手段㈣。

45

北京化工大学硕士学位论文

第五章结论与展望
5.1设计结论
经过一年的努力,本次设计任务已圆满完成。在这次毕业设计中,我所完 成的工作主要有以下几项: 首先,深入地学习了大规模可编程集成电路FPGA的知识,弄清楚了FPGA 的物理特点、工作原理及其包含的硬件资源的数量和特点。确定了在进行电路设 计时将要使用到的硬件资源类型。 其次,认真地学习了FPGA的开发软件的功能特点和具体的操作使用方法。 研究了如何利用软件来快速、有效地实现硬件电路设计的方法。

再次,对支持系统级行为描述的ⅦDL和Vjrilog皿L语言的设计方法和
设计思想进行了深入的学习和理解。 第四,深入了解了CRC校验的工作原理,并通过比较的方式论述了CRC

与其它校验方式的优缺点。 第五,细致地分析了um盯的工作原理和基本的I,ART帧格式,并根据串

行通讯协议,利用Vcmog皿L语言实现了通用异步收发器uART的设计。。
最后,根据UART的工作原理,分析了在异步串行遥信方式中采用CRC校 验的可行性,确定了各个子电路工作模块的划分。

5.2系统开发的几点体会

5.2.1系统模块开发的重要性

对于一个系统的开发,最初的模块划分是非常重要的。随着系统的复杂程度 的增大,模块划分对系统的后续开发显示出越来越大的重要性。随着自顶而下 (,rop—ow_n设计方法的广泛采用,把一个系统划分为几个子模块,然后各个予 模块分别设计的方法也越来越多的被广大设计者所使用。一个系统模块划分的好 坏,模块间接口设计的是否合理,将直接影响到整个系统的开发,甚至会决定系

统开发的成功与否M。一个良好的系统模块划分,合理的模块问接口设计会使后
续的系统开发事倍功j}三。反之则饮后续的系统丌发步履为难。冈而,系统丌发人 员把越来越多的时间和精力投入到系统的模块划分和接口设计当中。具体到本课 题研究过程中,在设计uART的收发模块合并时,由于开发的经验不足,模块

北京化工大学硕士学位论文

间的接口不是很合理,等到开发到具体的子模块时,发现了问题,使得子模块的 设计无法进行下去。从而不得不重新设计模块间的接口,耽误了整个系统开发的 进度。

5.2.2 VeriIog

HDL语言的特殊性

verilog

HDL是一种硬件描述语言,它所描述的对象是具体的硬件电路,这

就决定了它与普通的程序设计语言有着很大的不同。普通的程序设计语言一般是 顺序执行的,而Vemog如)L语言则有并行执行部分,这是由硬件电路的并行性

决定的。作为描述硬件电路的一种设计语言,、,舐log皿L必然要有相应的语句
去描述硬件电路的并行性【档l。因而在编写Vemog瑚)L语言程序时,就必须要考 虑到这一点,否则若按普通的编程思路去编写verilog脚)L语言程序,就会使代

码的效率降低,甚至不能实现预定的功能。编程时,思路中要有相应的电路概念, 然后按照相应的电路编写程序,这样的程序系统易于综合、优化,最后综合的电
路结果也比较理想。

5.2.3器件时延对系统实现的影响

器件时延对一个实际系统来说是客观存在的,它对系统实现的影响是不可

避免的,同时也是很难预测的。因而在实现系统时,要想把器件对系统实现的影
响完全消除几乎是不可能的。但又不能完全忽视它,否则很可能导致系统无法正 确实现。比较好的做法是把器件时延的影响控制在一个系统可以允许的范围内, 使它不至于对系统实现产生决定性的影响。具体到本课题研究过程中,在设计 uART的数据转换时,刚开始由于没有考虑器件时延的影响,所以导致了仿真结 果与预先设想的不一致,使得系统无法实现预定的功能。可见,考虑器件时延的 影响对一个系统设计者来说是非常重要的【49l。

5.3印A技术的前沿发展趋势瞪0】

随着高层次综合理论的不断完善,集成电路设计方法学的研究方向也在逐 渐调整并产生出深亚微米(Deep (s”thesis
for S【1b micron)集成电路设计方浊学、可测。阽综合

Testability)等新的研究领域。以设计再利用(Design rcuse)和软硬件 reco_design)为主要内容的单个芯片上的系统

协同设计(sof俯ar洲ardware

47

(System on



chip,sOc)的设计力一法研究也已成为人们研究的热点。对于系统芯

片(SOC),主要有三个关键的支持技术:软、硬件的协同设计技术;IP模块库问题; 模块界面间的综合分析技术。

北京化工大学硕士学位论文

致谢
本论文的工作是在我的导师韩建国教授的悉心指导下完成的,韩建国教授严 谨的治学态度和科学的工作方法给了我极大的帮助和影响。在学习上和生活上都 给予了我很大的关心和帮助,在此衷心感谢三年来韩老师对我的关心和指导。 也感谢信息学院的王建林院长,在平时的学习和生活中给我很大的支持和帮 助。 感谢我的父母,他们的理解和支持使我勇敢地面对困难和挑战,他们无私的 爱使我终身受用。 汪晓男老师和郝丽老师在平时的生活学习和论文撰写中给我了很多的鼓励 和支持。 另外在实验室工作及撰写论文期间,魏刚、史先龙、院蕾、李育红等同学对

我论文中的硬件设计和软件开发工作给予了热情帮助,在此向他们表达我的感激
之情。

49

北京让工大学硬士学位论文

参考文献

夏宇闻.复杂数字电路与系统的Ⅶrnog}玎DL设计.北京:北京航空航天大学出版 社。1998

网 嘲

王诚,薛小刚’钟信潮.H.G栅【D设计工具ⅪLmXIsE5Ⅸ使用祥解.北京:人民邮电
出版社2∞3 候伯亨,顾新.V}玎)L硬件描述语言与数字逻辑电路设计.西安:西安电子科技大学出版 社。1997 夏宇闻.Verilog数字系统设计教程.北京:北京航天航空大学出版社,2003

吲吼

nⅧ∞E D∞ald,M00rby



Pllilip.伯e

vernog lIardware

Des耐pdon【anguage∞unh

EdiⅡon)【Ⅶ.1(1uwerA∞demic Ptlblisb er.1998
王正洪,周振环.微机接口与应用.北京:中国石化出版社。2000

BbaskefJ.Ve柚09枷)LgynthesisAPmc虹calPrin槲【M】.starGal强yP曲lishing.1998
任艳颖,王彬.IC设计基础.西安:西安电子科技大学出版社,2003.5

王伟.骁曲g珈)L程序设计与应用.北京;人民邮电大学出版社,2D05.3 旧吲嘲吼呷
He蚰e龉y
John L Pa仕erson

D胛id

A.Comput盯

Organiz撕oⅡ&Desi印,

the

hardwaTe『s吨wa托证鼢tace口】.MoIg抽&m触蝴llublish盯,Ino 1998
金素梅,王家礼.基于FPGA的cRc编码器的实现.仪器与仪表【B】.2005

m∞ ∞ 畔

Micbael

J曲n Seb懿d卸Sn虹th.Appj铅虹∞-Spcc砸c

lnlez筝ated

cjfcIlits[M】.Pea蚴

Edu∞don N0rtll Asia“mitcd hlc。1997

王新梅,肖国镇.纠错码一原理与方法(修订版)口川.西安:西安电子科技大学出版
社,2001(4). 陈赜,朱如琪,罗杰,王建明,鲁放.cPU)帆,G^与ASIC设计实践敦程【M】.北京: 科学出版社.2005 刘亮.数字电路设计与vernog HDL【M】.北京:人民邮电出版社.2000 李广军,孟宪元.可编程ASlC设计及应用.西安:电子科技大学出版社.2000

任晓东,文博.凹【I班鸺A高级应用开发指南.北京:电子工业出版社,2003
坫坩"竭


李圣怡,戴一帆,王宪平.windows环境下软硬件接口技术【M].长沙:国防科技大学出版
社,2001

J.M.Rabcy,Digital Inte璺ated
2002.12

circⅡit:ADesign

Pefspective(second edition),Prentice
al

Hall



Readfng in Hardware,Software Ⅵ,0l£

Codes咖:Giouanni,DeMicheIi,et

RoⅢ!mst,wa”e



周祖荣,张鹏远.对帧校验序列的研究[J】.青岛大学学报.2003(2). 陆海峰.实现FPG认与PC的串行通信【J】,电子设计与应用,2004(10). Ken Chapman.Pic081aze 8-bitMicrocontfolIer forⅥr2tex—E and Sp耐a11
IJ/IlE

规巧

DeVices【EB/OL】.http:/^ww.xilinx.com,2003,4,xAPP213(V2.1).
J Bhaskef著,孙海平等译vc

rilng}ID蠊合实用社W【M】.北京’洁’F』、学㈦Kj}:004
2000. 2002.

Rochit Rajsuman,system—on—chip:dcsign and 1℃st

沈振元,聂志泉,赵雪荷.通信系统原理[M】,西安:西安电子科披人学出版m 抖篮拍卯 苗长云.现代通信原理及应用【M】|一B京:电子工业出版社.2005.

北京化工大学硕士学位论文

孙福明,李笑盈.基于多种EDA工具的FPGA设计『J1.电子技术应用.2002.1

}驷i】【,HY57V64

Series

SDI认M

Dat勰heet.2002(6).

张军峰,王占领.基于EDA技术的即GA设计fJl.电子与电脑2006
陶亚雄.现代通信原理【M 1.北京:电子工业出版社.2003 潘松.EDA技术实用教程【M】.北京:科学技术出版社'2002. 何伟.消除CPu),FPGA器件设计中的毛刺【J 1.重庆大学学报’2002'25(12)

㈣㈣㈣㈨㈣㈣鲫 ㈣ ㈨

侯伯亨,顾新.ⅥⅢL硬件描述语言与数字逻辑电路设计【M1.西安:西安电子科技大
学出版社,1999.. 何伟,唐仁圣,张玲.FPGA,CPLD可编程逻辑器件的在系统配置方法【J 1.重庆大学学 报,2003.5. 赵佳明,来晓岚,卢焕章.FPC讽作为协处理器在实时系统中的应用『J 1.电子技术应用, 20∞-3. 褚振勇,翁木云.H,GA设计及应用【M】.西安:西安电子科技大学出版社,2002. 王金明,等编著.数字系统设计与vcrilog}玎)UMl.北京:电子工业出版社,2002

M㈣㈣ 李云鹏,王新梅,谢显中,等.基于F崛~自适应高速I塔编译码器的IP核设计fJ】.
重庆邮电学院学报,2003,15(1)

KRBaker,MIMagazille.Mininl试ngm娃imumlalene鹞埘出jobhmny【J】.2001.

王福昌,潘晓明.通信原理实验阻】.武汉:华中理工大学出版社,1999.
樊昌信,张甫羽,徐炳祥,吴成柯.通信原理【M】.北京:国防工业出版社,2001.
潘松,黄继业.EnA技术使用教程【M1.北京:科学出版社’2002.

刘凌,胡永生.数字信号处理的FPGA实现嗍.北京:清华大学出版社,2003,1.

㈣㈣㈣㈣㈣嗍㈣

任晓东.cPU)/FPGA高级应用开发指南fM】.北京:电子工业出版社'2003.

】Ⅱ巩先锋工作室.FPG~cPLD设计工具—Ⅺ1iⅡ.IsE5.x使用详解fM】.北京:人
民邮电出版社'2003. 李广军,盂宪元.可编程ASIc设计及应用【M】.成都:电子科技大学出版社,2003. 戴立江,基于EDA技术的FPGA应用研究fDl.天津:天津工业大学.2004 常允风.基于FPGA的Mcu IP核设计与研究.兰州:西北工业大学.2005 王诚,薛小刚,钟信潮.xninx lsE5.x使用祥解.北京:人民邮电出版社.2003.6 樊勇.FPGA在通信控制器中的应用[C].北京:清华大学核能技术设计研究院,1997

M㈣㈣㈣㈣㈣

张平安.16位循环冗余校验码cRc的原理和性能分析【J】.太原:山西科技,2005.5

北京化工大学硕士学位论文

附录

附录1接收模块的源程序代码
、tilnescale 1 n“1

n蜘Ille

rc、倒dout,data』eady,删ng—ermLpariIy—erfo‘fxd,dkl6x,rst,rdn);

ns

inputrxd; input clkl6x; input rsI; ilIputrdn;

0utpmt[7:0】dout; ∞qmt data r∞dy;
ouqmt framm臣_error; ouqmt parity—;rmr; reg dataJeady;
陀g台amin&_error; feg

paritUefror;

reg clkl)【_enable; feg p:0】clkdiV; wi陀clklx: rcgrxdl;

rcgⅨd2;

reg【7:0】rsr; rcg【3:o】rbr; reg【3:o】no_b砥rcvd;
regpanty;

a%i印dout=!rdll?rbr:8’bz; always@(p0∞dgc clkl6x 0r p0∞dge rst)

嘲”

i“rst)
begln

Ⅸd1<=1.b1:
rxd2(=1'b1: end else be粤n r)【d1<=fxd: r)【d2<=f】【d1: eⅡd end clkl6x

always@0)0sedge
begin

or

posedge rst)

iffrStl
clklx enable<=1'b0: else iff!f)【d1&&r】【d21 clklx enable<=1Tbl: clsc iffno bits cnd

rcvd==4.bll㈣

clklx c舢blc<=lbO:

always@(poscdge clkl6x
begin

o‘posedgc

rs【of

n。gcdgc

rdn)

52

北京化工大学硕士学位论文

if(I∞
data

mdv=1.b0:

el∞耐!rdn)
data TeadV=1.b0;

el∞巡no b沁rc¨==4tbl011)
data readv=1’b1: end

always(iH如sedge
be沓n

clkl6x

or

po∞dge rst)

i炳I)
el∞iffclklx enable)

clkdiv=4.b