当前位置:首页 > FPGA > 正文内容

Verilog实现串并转换

chanra1n4年前 (2022-04-21)FPGA6451

项目文件:SIPO.zip

//------------------------------------------------------
// File Name        : SIPO.v
// Author           : ChanRa1n
// Description      : A easy SIPO code
// Called by        : TopModule
// Revision History : 2022-04-21
// Revision         : 1.0
// Email            : [email protected]
// Copyright(c) 2018-Now, MYFPGA.CN, All right reserved.
//------------------------------------------------------

module SIPO (
    input   wire   [0:0]   Sys_clk,
    input   wire   [0:0]   Sys_rst_n,
    input   wire   [0:0]   Sig_si,
    input   wire   [0:0]   Sig_si_en,
    output  wire   [7:0]   Sig_po
);
    reg   [7:0]   Sig_po_reg;
    assign Sig_po = Sig_po_reg;
   
    always@(posedge Sys_clk or negedge Sys_rst_n)begin
        if(~Sys_rst_n)begin
            Sig_po_reg <= 8'd0;
        end
        else begin
            if(Sig_si_en)begin
                Sig_po_reg <= {Sig_po_reg[6:0],Sig_si} ;
            end
            else begin
                Sig_po_reg <= Sig_po_reg ;
            end
        end
    end

endmodule


//------------------------------------------------------
// File Name        : SIPO_TB.v
// Author           : ChanRa1n
// Description      : Testbench file for SIPO_TB
// Called by        : Simulation
// Revision History : 2022-04-21
// Revision         : 1.0
// Email            : [email protected]
// Copyright(c) 2018-Now, MYFPGA.CN, All right reserved.
//------------------------------------------------------

`default_nettype wire
`timescale 1ns/1ns

module SIPO_TB ();
    reg Sys_clk;
    reg Sys_rst_n;
    localparam CLK_PERIOD = 10;

    always #(CLK_PERIOD/2) Sys_clk=~Sys_clk;

    reg   [0:0]   Sig_si;
    reg   [0:0]   Sig_si_en;
    wire  [7:0]   Sig_po;

    SIPO SIPO (
    .Sys_clk(Sys_clk),
    .Sys_rst_n(Sys_rst_n),
    .Sig_si(Sig_si),
    .Sig_si_en(Sig_si_en),
    .Sig_po(Sig_po)
    );

    initial begin
        #1 Sys_rst_n<=1'b0;Sys_clk<=1'b0;
        #(CLK_PERIOD*3) Sys_rst_n<=1;
        repeat(100)begin
            Sig_si <= {$random} % 2;
            Sig_si_en <= {$random} % 2;
            #(CLK_PERIOD);
        end
        $stop;
    end

endmodule

image.png

image.png

扫描二维码推送至手机访问。

版权声明:本文由我的FPGA发布,如需转载请注明出处。

本文链接:https://world.myfpga.cn/index.php/post/243.html

分享给朋友:

“Verilog实现串并转换” 的相关文章

FPGA ALARM FPGA多功能闹钟 完整项目 内含上位机

FPGA ALARM FPGA多功能闹钟 完整项目 内含上位机

一、项目简述本项目使用苏州硬禾信息科技有限公司设计的小脚丫FPGA开发板设计了一个完成定时、测温、报警、控制的小项目,并通过上位机显示、下发音乐配置数据。本项目B站介绍:https://www.bilibili.com/video/BV1Vh411k7QV/二、研究进展(一)研究内容:l ...

多路选择器

多路选择器

多路选择器:在多路数据传送过程中,能够根据需要将其中任意一路选出来的电路。二选一多路选择器 --- 模块框图in_1:输入信号in_2:输入信号sel:控制选择信号out:输出信号二选一多路选择器 --- 波形图in_1、in_2、sel 的波形是随机的。out 的波形根据控制选通信号而定。当 se...

全加器(层次化设计)

全加器(层次化设计)

该篇博客根据上一篇半加器的设计,再结合层次化的设计思想来实现一个全加器!层次化设计理论部分:数字电路中根据模块层次的不同有两种基本的结构设计方法:自底向上的设计方法 和 自顶向下的设计方法自底向上(Bottom-Up)        自底向上的设计是一种传统的设计方法,对设计进行逐次划分的过程是从存...

FPGA时序分析和时序约束

FPGA时序分析和时序约束

时序分析:时序分析的目的就是通过分析FPGA设计中各个寄存器之间的数据和时钟传输路径,来分析数据延迟和时钟延迟之间的关系。一个设计OK的系统,必然能够保证整个系统中所有的寄存器都能够正确的寄存数据。数据和时钟传输路径是由EDA软件,通过针对特定器件布局布线得到的。时序约束:两个作用告知 EDA 软件...

时序约束(TCL脚本)

时序约束(TCL脚本)

get_ports的使用方法如下:# 获取所有端口 get_ports *   # 获取名称中包含data的端口 get_ports *data*   # 获取所有输出端口 get_ports -filter {DIRECTION == OUT}   # 获取所有输入端口 all...

CDC跨时钟域信号处理

CDC跨时钟域信号处理

保证时序电路的时序要求:建立时间:在有效的时钟沿到来之前,输入端的输入信号需要保持稳定不变的最小时间保持时间:在有效的时钟沿到来之后,输入端的输入信号需要保持稳定不变的最小时间CDC问题1:亚稳态亚稳态原因:亚稳态解决方法:对于单信号来说,使用 Double FF来进行信号同步CDC问题2:数据收敛...