欢迎来到天天文库
浏览记录
ID:50321867
大小:1.25 MB
页数:96页
时间:2020-03-08
《EDA技术与应用 教学课件 作者 陈海宴第9章 数字设计实例.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第9章数字设计实例本章介绍了卷积编码和通用异步收发器的设计实例。希望读者能够通过实例掌握VerilogHDL语言,并学以致用。9.1卷积编码VerilogHDL设计卷积码编码器在一段时间内输出的n位码,不仅与本段时间内的k位信息位有关,而且还与前面m段规定时间内的信息位有关,这里的m=N-1,通常用(n,k,N)表示卷积码(注意:有些文献中也用(n,k,m)来表示卷积码)。卷积码的编码器是由一个有k个输入端、n个输出端、N-1个移位寄存器构成的有限状态的有记忆系统,通常称为时序网络。在硬件实现的时候,一般采用多项式法来描述,可以与
2、延迟链的硬件结构相对应,如(2,1,3)卷积码的生成多项式矩阵为:G(D)=[1+D+D2,1+D2]其中,D为延迟算子,生成多项式的第一项为1+D+D2,表示输出编码的第一个码元等于输入码元x(n)与前面两个时刻输入的码元x(n-1)、x(n-2)的模2和,同理第二项类似。该卷积码的n=2,k=1,N=3,因此,它的约束长度nN=2×3=6。m1与m2为移位寄存器,它们的起始状态均为零。C1、C2与x(n)、x(n-1)、x(n-2)之间的关系如下:C1=x(n)+x(n-1)+x(n-2);C2=x(n)+x(n-2)假如输入
3、的信息为x=[11010],为了使信息x全部通过移位寄存器,还必须在信息位后面加3个零。9.1.2卷积码的Verilog实现由于(2,1,7)卷积码具有较好的纠错性能和可接受的复杂性,因而对其的研究最为广泛。卷积码的子生成元为:g(1,1)=133OCT,g(1,2)=171OCT,其编码器的结构如图9.1.2所示。图中⊕表示模2加,输出数据在上下分支之间切换。9.2通用异步收发器的VerilogHDL设计与验证9.2.1通用异步收发器规范通用异步收发器的数据传输格式如图9.2.1所示。起始位为“0”,占用1位,用来表示1个字符数
4、据的开始;其后是数据位,可以是7位或8位,传输时待发送数据的低位在前,高位在后;接下来是奇偶校验位;最后是停止位,用逻辑“1”表示一个字符信息的结束。9.2.2电路结构设计图9.2.2是CPU采用UART进行通信的应用示意图。CPU通过总线与UART相连,两个UART通过外部线路互连。UART中的CPU接口电路实现以下主要功能:(1)与CPU接口,将CPU对内部控制寄存器的写操作转化为对发送控制器和接收控制器的控制信号。(2)将CPU写入到内部数据发送寄存器的数据进行锁存并提供给发送控制器。(3)将接收控制器接收的数据交给CPU,
5、同时提交接收数据的状态信号。(4)对收、发控制器的中断进行管理。对于中断寄存器的读操作的同时对寄存器清零,以避免重复产生中断,这需要专门的电路进行维护和管理。UART中的发送控制器实现以下主要功能:(1)根据clk_div_ctl给出的时钟分频比将xmt_data上的数据按照从低位到高位的顺序依次发出。在数据发送过程中需要根据规范插入起始位、奇偶校验位和停止位。(2)发送控制器在xmt_en为高电平时开始向线路方向发送数据。完成当前字节发送后通过xmt_over通知控制电路当前发送完成,由控制电路负责产生中断和进行中断管理。UAR
6、T中的接收控制器实现以下主要功能:(1)检测接收数据中的起始位,并完整地接收数据。(2)根据接收数据进行奇偶校验,判断数据是否正确接收,并产生接收数据状态rcv_status,接收控制器通过rcv_readay通知控制电路当前rcv_data上的数据是当前接收的有效数据。由控制电路锁存该数据并产生中断,通知CPU存在需要处理的接收数据。9.2.3UART控制电路模块的代码设计与分析uart_ctl电路的设计代码如下:9.2.4发送电路的代码设计与仿真分析UART发送电路的代码如下。对它的分析需要参考uart的字符格式。9.2.5接
7、收电路代码设计与仿真UART接收电路的操作与数据帧的结构密切相关,UART接收电路的操作代码如下:9.2.6UART系统仿真将sdin与sdout在电路模块之外直接连接,进行测试。如果接收到的数据与发送的数据相同,则表明电路可以正常工作。为了对整个电路工作过程进行模拟,需要建立模拟CPU读写操作的读写任务,然后将这些任务组合起来与被测电路一起模拟整个电路的工作特征。系统仿真的测试代码如下:9.2.6UART自动测试testbench如果对大量数据的对比分析,容易出错,有必要进行收、发数据的自动对比分析。首先将测试代码中的任务进行组
8、合封装,重新定义一个包括完整数据发送流程的数据发送任务send_byte,同时定义一个收发数据比较任务,这样就可以完成数据的收发操作和自动对比工作,这种任务结构更为清晰和易于维护。9.3小结本章首先介绍了卷积编码的工作原理、卷积编码器的Verilo
此文档下载收益归作者所有