Three modules

/*
这个程序的作用是实现一个长度为3的移位寄存器,使用三个D触发器(my_dff模块)串联而成
移位寄存器的功能:
1. 串行信号转换位并行信号
2. 并行信号转换串行信号
3. 信号左移、右移等
应用场景:
1. 并行数据转换为串行数据
应用场景
串行通信:
SPI:在SPI通信中,主机(Master)需要将并行数据转换为串行数据发送给从机(Slave)。移位寄存器可以将并行数据逐位移出,形成串行数据流。
UART:在UART通信中,数据通常以并行形式存储在寄存器中,然后通过移位寄存器转换为串行数据发送。

2. 串行数据转换为并行数据
应用场景
串行通信:
SPI:从机(Slave)接收到的串行数据需要转换为并行数据以便进一步处理。移位寄存器可以将串行数据逐位存储,最终形成并行数据。
UART:接收端需要将接收到的串行数据转换为并行数据,以便存储到寄存器中。

3. 单向移位寄存器
应用场景
数据延迟:在某些时序控制电路中,需要对数据进行逐位延迟。单向移位寄存器可以实现这种延迟功能。
计数器:通过环形移位寄存器(将输出反馈到输入)可以实现简单的计数器。
*/
module top_module ( input clk, input d, output q );

wire d_1;
wire d_2;

    my_dff my_dff_inst1(
        .clk(clk),
        .d(d),
        .q(d_1)
    );
    my_dff my_dff_inst2(
        .clk(clk),
        .d(d_1),
        .q(d_2)
    );
    my_dff my_dff_inst3(
        .clk(clk),
        .d(d_2),
        .q(q)
    );
endmodule