verilog实现串并并串转换的代码和仿真结果
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
load <= 1'b1;
pi <= 4'b1100;
#20;
load <= 1'b0;
pi <= 4'hxxxx;
#90
load<=1'b1;
pi<=4'hxxxx;
reg [3:0] pi;
wire [3:0] po;
wire so;
reg flag;
//reg biaozhi;
initial Fra Baidu bibliotekegin
flag=1'b1;
#400;
flag=1'b0;
end
initial begin
en = 1'b0;
si = 1'b0;
#10;
// 4'b1010输入si为1010该信号为合法输入
input flag;
input [3:0] pi;
output reg so;
output reg [3:0] po;
output reg biaozhi;
reg [3:0] r;
always@(posedge clk )
if(flag)
begin
if(~rst_n)
begin
r <= 8'h0;
si = 1'b1;
#20;
si = 1'b0;
#20;
si = 1'b1;
#20;
en = 1'b1;//将en信号此时赋为1,此时输出po
si = 1'b0;
#20;
en = 1'b0;
si = 1'bx;
end
initial begin
load = 1'b0;
pi = 4'hxxxx;
#400;
源代码
测试代码
3
2.3.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;
if(r[3]||~r[3])//判断r寄存器是否已经全部清空为x
begin
so = r[3];
if(r[2]||~r[2])//在r2没有输出之前biaozhi为0
biaozhi=1'b0;
else//当r3刚刚跳变的瞬间,biaozhi变为1
biaozhi=1'b1;
end
else
begin
so=1'bx;//没有信号输入时so置为不定态
1
1.1
串并转换电路是串行通信系统中重要的组成部分。在
从图中可以看出,并串转换的原理是:先将四位数据暂存于一个四位寄存器器中,然后左移输出到一位输出端口,这里通过一个“移位”指令就可以了。
从图中可以看出,串并转换的原理是:新输入的位值成为原来数据的最低位,将原来数据的最高位舍去,这里可以通过一个简单的“连接符”就能做到。
另外,在本程序中,采用了x来表示功能实现失败,即如果输入的串行数据少于四个,则在输出的四位数为x态。在并转串中,在最后一位串行输出实现时,biaozhi为1,否则为0,表示尚未完成输出。
具体实现中,如果有输入,即si||~si,则在en(使能位)为1时让所存在触发器中的输入变量输出。但是如果si输入的值少于四个,则输出四个x态。由于测试代码中en在最后一个周期赋值为1,所以之前的输入并不能同步输出,而是锁存起来了。这样就实现了少于四位输出x状态的功能。具体实现如下
end
else
begin
r = {r, si};
if(si||~si)
begin
po = (en) ? r :4'h0;
biaozhi=(en)?1'b1:1'b0;
end
else
begin
po=4'hxxxx;
biaozhi=1'b0;
end
end
end
else
begin/*以下部分由本人完成*/
if(~rst_n)//完成并入串出功能
begin
r <= 4'h0;//如果复位信号rst_n为低电平输出0000
end
else if(load)//如果load信号为高电平,可以输入信号
begin
r <= pi;//把输入值r数组
end
else//如果load为低电平则完成输出功能
begin
r <= {r, 1'bx};//移位寄存器的实现,如果r输出到so,则给r已经输//出了的位置为x
关键词:串转并并转串移位寄存器
Abstract
This paper deals with verilog realize string and swap circuit, in synchronous clock under the control of four parallel 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 serialserial turns to parallelShift register
2
2.1
在本程序中要实现两个功能,即串行到并行和并行到串行的分别转换。在一个模块中,需要使用一个标志位flag,flag为1时,实现串行到并行的转换,flag为0时,实现串行到并行的转换。需要把flag当做module的一个输入端口,并在测试代码中表现出来。
2.2
本程序中采用biaozhi作为标志,若变量biaozhi为1,则代表转换成功,为零代表转换失败。设计标志位的原因是本程序中,在串行输入时,当输入位数少于4,则无法实现串转并的功能。
题目:串并互换电路的设计
系(部):***
专业班:***
姓名:***
学号:***
指导教师:***
完成比例:**
2011年12月
摘
本文主要讲述用verilog实现串并互换电路,在同步时钟的控制下,四位的并行数据和串行数据相互转换,通过一位的控制信号来控制该电路为串并或并串转换,最后由串并有效位来表示串并互换成功。
biaozhi=0;//标志重新归零
end
end
end
endmodule/*以上部分有本人完成*/
测试代码1:
`timescale 1ns/1ns
`include "e:/spps(4)/spps.v"
module spps_tb;
reg clk;
reg rst_n;
reg en;
reg si;
reg load;
pi <= 4'b1100;
#20;
load <= 1'b0;
pi <= 4'hxxxx;
#90
load<=1'b1;
pi<=4'hxxxx;
reg [3:0] pi;
wire [3:0] po;
wire so;
reg flag;
//reg biaozhi;
initial Fra Baidu bibliotekegin
flag=1'b1;
#400;
flag=1'b0;
end
initial begin
en = 1'b0;
si = 1'b0;
#10;
// 4'b1010输入si为1010该信号为合法输入
input flag;
input [3:0] pi;
output reg so;
output reg [3:0] po;
output reg biaozhi;
reg [3:0] r;
always@(posedge clk )
if(flag)
begin
if(~rst_n)
begin
r <= 8'h0;
si = 1'b1;
#20;
si = 1'b0;
#20;
si = 1'b1;
#20;
en = 1'b1;//将en信号此时赋为1,此时输出po
si = 1'b0;
#20;
en = 1'b0;
si = 1'bx;
end
initial begin
load = 1'b0;
pi = 4'hxxxx;
#400;
源代码
测试代码
3
2.3.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;
if(r[3]||~r[3])//判断r寄存器是否已经全部清空为x
begin
so = r[3];
if(r[2]||~r[2])//在r2没有输出之前biaozhi为0
biaozhi=1'b0;
else//当r3刚刚跳变的瞬间,biaozhi变为1
biaozhi=1'b1;
end
else
begin
so=1'bx;//没有信号输入时so置为不定态
1
1.1
串并转换电路是串行通信系统中重要的组成部分。在
从图中可以看出,并串转换的原理是:先将四位数据暂存于一个四位寄存器器中,然后左移输出到一位输出端口,这里通过一个“移位”指令就可以了。
从图中可以看出,串并转换的原理是:新输入的位值成为原来数据的最低位,将原来数据的最高位舍去,这里可以通过一个简单的“连接符”就能做到。
另外,在本程序中,采用了x来表示功能实现失败,即如果输入的串行数据少于四个,则在输出的四位数为x态。在并转串中,在最后一位串行输出实现时,biaozhi为1,否则为0,表示尚未完成输出。
具体实现中,如果有输入,即si||~si,则在en(使能位)为1时让所存在触发器中的输入变量输出。但是如果si输入的值少于四个,则输出四个x态。由于测试代码中en在最后一个周期赋值为1,所以之前的输入并不能同步输出,而是锁存起来了。这样就实现了少于四位输出x状态的功能。具体实现如下
end
else
begin
r = {r, si};
if(si||~si)
begin
po = (en) ? r :4'h0;
biaozhi=(en)?1'b1:1'b0;
end
else
begin
po=4'hxxxx;
biaozhi=1'b0;
end
end
end
else
begin/*以下部分由本人完成*/
if(~rst_n)//完成并入串出功能
begin
r <= 4'h0;//如果复位信号rst_n为低电平输出0000
end
else if(load)//如果load信号为高电平,可以输入信号
begin
r <= pi;//把输入值r数组
end
else//如果load为低电平则完成输出功能
begin
r <= {r, 1'bx};//移位寄存器的实现,如果r输出到so,则给r已经输//出了的位置为x
关键词:串转并并转串移位寄存器
Abstract
This paper deals with verilog realize string and swap circuit, in synchronous clock under the control of four parallel 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 serialserial turns to parallelShift register
2
2.1
在本程序中要实现两个功能,即串行到并行和并行到串行的分别转换。在一个模块中,需要使用一个标志位flag,flag为1时,实现串行到并行的转换,flag为0时,实现串行到并行的转换。需要把flag当做module的一个输入端口,并在测试代码中表现出来。
2.2
本程序中采用biaozhi作为标志,若变量biaozhi为1,则代表转换成功,为零代表转换失败。设计标志位的原因是本程序中,在串行输入时,当输入位数少于4,则无法实现串转并的功能。
题目:串并互换电路的设计
系(部):***
专业班:***
姓名:***
学号:***
指导教师:***
完成比例:**
2011年12月
摘
本文主要讲述用verilog实现串并互换电路,在同步时钟的控制下,四位的并行数据和串行数据相互转换,通过一位的控制信号来控制该电路为串并或并串转换,最后由串并有效位来表示串并互换成功。
biaozhi=0;//标志重新归零
end
end
end
endmodule/*以上部分有本人完成*/
测试代码1:
`timescale 1ns/1ns
`include "e:/spps(4)/spps.v"
module spps_tb;
reg clk;
reg rst_n;
reg en;
reg si;
reg load;