串并装换器的设计及仿真结果
来源:互联网 发布:程序员的职业素养 编辑:程序博客网 时间:2024/06/10 08:23
串/并转换是高速数据流处理的重要技巧之一。串/并转换的实现方法多种多样,根据数据的的顺序和数量要求,可以选用寄存器,双扣RAM,SRAM,FIFO,等实现。对于
数量比较小的设计可以采用移位寄存器完成串/并转换。
在工程中,如何体现串/并转换的设计思想呢? 怎样才能提高系统的处理速度呢 ?
一个简单的串/并转换框架如下图所示,串行输入的数据通过FPGA内部的 n 个移位寄存器后,最后输出的是一个 n 位宽的并行总线数据
移位寄存器是需要做时钟同步的,也就是说,n 个时钟采样到的串行数据需要在 n 个时钟周期后以并行的方式输出,这是最基本的串入并出的设计思想,这种对于串行接口
大行其道的告诉数据传输领域,这种简单的转换也是接口芯片重要的任务之一。但从FPGA系统设计的角度来看,串/并转换又有着更深刻的意义。从速度与面积互换的思想的角度来看,利用 n 倍的面积换取了 n 倍的吞吐量 ,这也是串并转换思想的重要体现。
-------------------------------------------以上摘自 吴厚航《深入浅出玩转fpga》
下面是我写的一个利用8位移位寄存器构成的 8位串并转换,串行输入每经过8个时钟之后输出一次 8位的数据 ,shift_reg为移位寄存器,rst_n为低电平异步置零信号。
code:
.module seri_to_para(clk,data_in,rst_n,data_out,count,shift_reg
);
input clk,data_in,rst_n;
output reg [7:0] data_out;
output reg [7:0] shift_reg;
output reg [2:0] count;
always @ ( posedge clk or negedge rst_n )
begin
if (!rst_n)
begin
shift_reg <= 0;
end
else
shift_reg <= {data_in,shift_reg[7:1]};
end
always @ ( posedge clk or negedge rst_n)
begin
if ( !rst_n )
begin
count <= 0;
end
else if( count < 7 )
count <= count+1;
else
begin
count <= 0;
data_out <= shift_reg;
end
end
endmodule
testbench:
`timescale 1ns / 1ps
module testbench;
// Inputs
reg clk;
reg data_in;
reg rst_n;
// Outputs
wire [7:0] data_out;
wire [7:0] shift_reg;
wire [2:0] count;
// Instantiate the Unit Under Test (UUT)
seri_to_para uut (
.clk(clk),
.data_in(data_in),
.rst_n(rst_n),
.data_out(data_out),
.shift_reg(shift_reg),
.count(count)
);
initial begin
// Initialize Inputs
clk = 0;
data_in = 1;
rst_n = 1;
// Wait 100 ns for global reset to finish
#100;
rst_n = 0;
#33
rst_n = 1;
// Add stimulus here
end
always # 10 clk=~clk;
always # 140 data_in=~data_in;
endmodule
仿真结果:
- 串并装换器的设计及仿真结果
- 数字电路设计之m0仿真结果
- 同步 FIFO 实列及仿真结果
- ALOHA simulaiton仿真结果及分析
- 基于SNMP的SNMP仿真系统的设计及实现
- 【matlab】仿真4PSK调制信号在高斯信道下的性能,并与理论分析结果比较——仿真篇
- 顶级图像去雾源码整理及仿真结果
- ISE 设计、综合及仿真流程
- ns2网络模拟实验,基于NS2的距离向量算法仿真及结果分析 请大侠帮忙啊~~~
- [朝花夕拾]基于C#的模拟仿真平台设计(部分)及服务器异步通信代码
- 带噪声的1KHz微弱信号采集系统设计仿真及制PCB板过程
- FPGA学习(第8节)-Verilog设计电路的时序要点及时序仿真
- modelsim保存仿真结果
- 功能仿真与时序仿真,及Modelsim的使用
- 【matlab】仿真4PSK调制信号在高斯信道下的性能,并与理论分析结果比较——理论篇
- CRC校验码的verilog实现与仿真结果
- 几种边缘算子的程序仿真和比较结果
- ns2:无线网络仿真与有线仿真结果(.tr文件)中每个数据的含义
- php返回所有类get_declared_classes 返回由已定义类的名字所组成的数组
- 针对Java开发者的Apache Camel入门指南
- SQL Server只能使用Windows身份登录,不能使用sa等Sql server身份进行登录”的问题
- H2 db 用法
- asp连接数据库SQLSERVER
- 串并装换器的设计及仿真结果
- SQL Server 2008安装时提示:重新启动计算机 失败
- 对事物ACID的理解
- SQL Server2008安装易出错的处理,代理服务提供的凭据无效
- SQL Server 管理员 - 您必须为 SQL Server 实例至少指定一个系统管理员
- cocos2d-x线程通信(msg)
- google自定义搜索站内搜索
- apache开启.htaccess伪静态
- TortoiseSVN使用简介