收藏 分享(赏)

verilog实现串并并串转换的代码和仿真结果.doc

上传人:精品资料 文档编号:10102777 上传时间:2019-10-10 格式:DOC 页数:15 大小:183.50KB
下载 相关 举报
verilog实现串并并串转换的代码和仿真结果.doc_第1页
第1页 / 共15页
verilog实现串并并串转换的代码和仿真结果.doc_第2页
第2页 / 共15页
verilog实现串并并串转换的代码和仿真结果.doc_第3页
第3页 / 共15页
verilog实现串并并串转换的代码和仿真结果.doc_第4页
第4页 / 共15页
verilog实现串并并串转换的代码和仿真结果.doc_第5页
第5页 / 共15页
点击查看更多>>
资源描述

1、I题目:串并互换电路的设计系 (部):*专 业 班:*姓 名:*学 号:*指导教师:* 完成比例:* 2011 年 12 月I摘 要本文主要讲述用 verilog 实现串并互换电路,在同步时钟的控制下,四位的并行数据和串行数据相互转换,通过一位的控制信号来控制该电路为串并或并串转换,最后由串并有效位来表示串并互换成功。关键词:串转并 并转串 移位寄存器 IIAbstractThis paper deals with verilog realize string and swap circuit, in synchronous clock under the control of four pa

2、rallel data and serial data transformation, through a control signals to control the circuit for the series and or and string of conversion, finally by string and effective to say a string and swap success. Key Words:Parallel turns to serial serial turns to parallel Shift registerIII目 录摘 要 IABSTRACT

3、 .II1 选题背景 11.1 本课题的意义 12 方案论证 22.1 串并并串选择的分析 .22.2 串并并串转换是否成功的标志位及表达 .23、程序的具体实现及仿真结果 34、本人完成部分及对该部分的理解 95 结论或总结 9致 谢 10参 考 文 献 1011 选题背景1.1 本课题的意义串并转换电路是串行通信系统中重要的组成部分。在 FPGA 平台上实现满足特定数据格式及时钟要求的串并转换电路,也已成为考查设计人员对数字电路理解的主要设计之一。Verilog 描述语言具有良好的可移植性和通用性,其设计的实现与芯片的工艺无关。在目前的专用集成电路和 FPGA 设计中,使用 Verilog

4、HDL 进行设计的描述 ,已成为主流的设计方法。本文基于 VerilogHDL 完成串并转换电路的设计。对通用串并转换单元进行了分析与 VerilogHDL 实现,进而给出了满足异步串行协议的串并转换模块的设计。设计采用自顶向下的设计方法,对于复杂的串并转换的实现使用有限状态机设计。本文设计的串并转换模块,可正确接收和发送异步串行数据格式,其性能满足串行通信的要求,可以集成于专用通信芯片中实现其功能。1.2 串并转换的原理与方法从图中可以看出,并串转换的原理是:先将四位数据暂存于一个四位寄存器器中,然后左移输出到一位输出端口,这里通过一个“移位”指令就可以了。从图中可以看出,串并转换的原理是:

5、新输入的位值成为原来数据的最低位,将原来数据的最高位舍去,这里可以通过一个简单的“连接符”就能做到。22 方案论证2.1 串并并串选择的分析在本程序中要实现两个功能,即串行到并行和并行到串行的分别转换。在一个模块中,需要使用一个标志位 flag,flag 为 1 时,实现串行到并行的转换,flag 为0 时,实现串行到并行的转换。需要把 flag 当做 module 的一个输入端口,并在测试代码中表现出来。2.2 串并并串转换是否成功的标志位及表达本程序中采用 biaozhi 作为标志,若变量 biaozhi 为 1,则代表转换成功,为零代表转换失败。设计标志位的原因是本程序中,在串行输入时,

6、当输入位数少于 4,则无法实现串转并的功能。另外,在本程序中,采用了 x 来表示功能实现失败,即如果输入的串行数据少于四个,则在输出的四位数为 x 态。在并转串中,在最后一位串行输出实现时,biaozhi 为 1,否则为 0,表示尚未完成输出。具体实现中,如果有输入,即 si|si ,则在 en(使能位)为 1 时让所存在触发器中的输入变量输出。但是如果 si 输入的值少于四个,则输出四个 x 态。由于测试代码中 en 在最后一个周期赋值为 1,所以之前的输入并不能同步输出,而是锁存起来了。这样就实现了少于四位输出x 状态的功能。具体实现如下源代码3测试代码3、程序的具体实现及仿真结果2.3.

7、1 程序代码及测试代码已标注本人完成部分,且赋较详细注释源代码:module spps (clk,rst_n,en,si,po,flag,load,pi,so,biaozhi);input clk;input rst_n;input en;input si;input load;input flag;input 3:0 pi;4output reg so;output reg 3:0 po;output reg biaozhi;reg 3:0 r;always(posedge clk ) if(flag)beginif(rst_n)beginr = 8h0;endelsebeginr = r,

8、 si;if(si|si)begin po = (en) ? r :4h0;biaozhi=(en)?1b1:1b0;endelsebeginpo=4hxxxx;biaozhi=1b0;end endend else begin /*以下部分由本人完成 */if(rst_n) /完成并入串出功能beginr = 4h0; /如果复位信号 rst_n 为低电平输出 0000endelse if(load) /如果 load 信号为高电平,可以输入信号beginr = pi; /把输入值 r 数组endelse /如果 load 为低电平则完成输出功能begin5r = r, 1bx; /移位寄存

9、器的实现,如果 r 输出到 so,则给 r 已经输/出了的位置为 xif(r3|r3) /判断 r 寄存器是否已经全部清空为 xbeginso = r3;if(r2|r2) /在 r2 没有输出之前 biaozhi 为 0biaozhi=1b0;else /当 r3 刚刚跳变的瞬间,biaozhi 变为 1biaozhi=1b1;endelsebeginso=1bx; /没有信号输入时 so 置为不定态biaozhi=0; /标志重新归零end endend endmodule /*以上部分有本人完成 */测试代码 1:timescale 1ns/1nsinclude “e:/spps(4)/

10、spps.v“module spps_tb;reg clk;reg rst_n;reg en;reg si;reg load;reg 3:0 pi;wire 3:0 po;wire so;reg flag;/reg biaozhi;initial beginflag=1b1;#400;flag=1b0;6endinitial beginen = 1b0;si = 1b0;#10;/ 4b1010 输入 si 为 1010 该信号为合法输入si = 1b1;#20;si = 1b0;#20;si = 1b1;#20;en = 1b1; /将 en 信号此时赋为 1,此时输出 posi = 1b0

11、;#20;en = 1b0;si = 1bx;endinitial beginload = 1b0;pi = 4hxxxx;#400;load = 1b1;pi = 4b1100;#20;load = 1b0;pi = 4hxxxx;#90load=1b1;pi=4hxxxx;endinitial clk = 1b0;always #10 clk = clk;initial beginrst_n = 1b0;#5;7rst_n = 1b1;endinitial begin$fsdbDumpfile(“spps.fsdb“);$fsdbDumpvars(0, spps_tb);#100;$fin

12、ish;endspps spps_0 (.clk(clk),.rst_n(rst_n),.en(en),.si(si),.po(po),.flag(flag),.load(load),.pi(pi),.so(so)/.biaozhi(biaozhi);测试代码 2:将串行信号赋为非法状态initial beginen = 1b0; si = 1b0;#10;/ 4b101x /只有连续的 3 位有效输入si = 1b1;#20;si = 1b0;#20;si = 1b1;#20;en = 1b1;si = 1bx;#20;en = 1b0;si = 1b0;end82.3.2 仿真结果测试代码

13、 1:注意 so 为不定态,且 biaozhi 一直为 0,表示没有成功实现功能。此时 pi 为 1100,biaozhi 在最后一个输出的时候变为 1。当输出结束,so 变为不定态。串转并部分并转串部分 /*该部分由本人完成 */测试代码 2:注意 po 输出为 1100,且在输出成功时 biaozhi 为 1 表示成功完成功能9此时 pi 输出为 1100,此时串行输出量为 1100,biaozhi 为 1,表示功能完成。串转并部分并转串部分同上。4、本人完成部分及对该部分的理解本人完成该程序的并转串部分。对该部分理解 :并转串主要实现并行到串行的转换,在 load 为 1 时完成输入,在

14、 load 为 0 时完成输出。输入值 pi 赋给一个中间变量数组 r,当输入结束的时候,利用移位寄存器(使用一个连接符完成),在 r 赋给输出量 so 值的同时,再次利用移位寄存器,使r 中被移出的量为不定态 x,判断语句中首先判断 r3位,如果 r3不为 x,则证明输出没有到最后一位,在判断语句中嵌套另一判断语句,当 r2为 x 时代表下一步最后一位已经要输出,则此时令 biaozhi 为 1,证明输出完毕。当 r3也变为 x 时,则输出完毕,此时可以令 biaozhi 为 0,实现 biaozhi 信号的复位。105 结论或总结其实,用 verilog 实现并串串并的转换是很简单的。核心

15、部分就是抓住了移位寄存器的特性。本程序涉及到两个功能,一个实现并串转换,一个实现串并转换,因此需要标志位 flag 来判断其功能。另外实践中需要判断是否输出完毕,因此需要加标志位(文中命名为 biaozhi)来判断。本次程序的编写,让我熟悉了硬件语言的基本语法知识,在实践中了解了更多 verilog 语言的神奇之处。另外本次实践让我深刻领悟到团队合作的重要性。本小组筛选各种资料,以资料为启发,开发自己的智慧添加新的功能,完善并优化程序。在合作的同时分工明确,效率很高。致 谢感谢在此文写作过程中对我悉心指导的老师郑梅军和与我同组的两位同学姜新和徐冉。参 考 文 献verilog 硬件语言描述 华中科技大学出版社Verilog 程序设计教程 人民邮电出版社csdn 网站

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报