精华内容
下载资源
问答
  • 1 Verilog描述 module shift_p2s( input clk, input [7:0] din, input load, output reg q ); reg [7:0] tmp; always@(posedge clk)begin if(load == 1...

    1 Verilog描述

    module shift_p2s(
        input         clk,
        input [7:0]    din,
        input         load,
        output reg     q
    );
        reg [7:0] tmp;
        
        always@(posedge clk)begin
            if(load == 1'b1)
                tmp <= din;
            else begin
                q <= tmp[7];
                tmp <= {tmp[6:0],1'b0};
            end
        end

    endmodule

    2 RTL视图

    3 功能仿真

    展开全文
  • 题: 试用D触发器和必要的门电路(或最小数量的中规模集成电路芯片)设计两位串行输入并行输出双向移位寄存器. 寄存器有X、K两个输入端, K控制移位方向, X输入数据. K=0时, 寄存器数据从高位移向低位, X往寄存器高位...

     题:  试用D触发器和必要的门电路(或最小数量的中规模集成电路芯片)设计两位串行输入、并行输出双向移位寄存器. 寄存器有X、K两个输入端, K控制移位方向, X输入数据. K=0时, 寄存器数据从高位移向低位, X往寄存器高位送数据; K=1时, 寄存器数据从低位移向高位, X往寄存器低位送数据.

    解析:

            根据题目的描述, 得到对应的状态表.

    状态表
    K X Q0* Q1* 功能
    0 0 Q1 0 左移
    0 1 Q1 1 左移
    1 0 0 Q0 右移
    1 1 1 Q0 右移

            根据状态表, 得到状态激励表.

    状态激励表
    K X D0 D1 功能
    0 0 Q1 0 左移
    0 1 Q1 1 左移
    1 0 0 Q0 右移
    1 1 1 Q0 右移

             这里为了提升电路设计的效率, 用一片74153的两个输出分别实现D0和D1的逻辑表达式.

            根据上面的分析, 绘制电路的原理图.

    展开全文
  • 移位寄存器内的数据可以在移位脉冲(时钟信号)的作用下依次左移或右移。移位寄存器不仅可以存储数据,还可以用来实现数据的串并转换、分频,构成序列码发生器、序列码检测器,进行数值运算以及数据处理等,它也是...

    1 概念

    移位寄存器内的数据可以在移位脉冲(时钟信号)的作用下依次左移或右移。移位寄存器不仅可以存储数据,还可以用来实现数据的串并转换、分频,构成序列码发生器、序列码检测器,进行数值运算以及数据处理等,它也是数字系统中应用非常广泛的时序逻辑部件之一。

    有四种不同类型的移位寄存器可用数据输入和输出设备的方式不同:

    串行输入,串行输出

    串行输入,并行输出

    并行输入,串行输出

    并行输入,并行输出
    在这里插入图片描述
    右移位寄存器的特点是右边寄存器的次态等于左边触发器的现态。串行输出数据从触发器FD的QD端输出,并行数据从个触发器的QA~QD端输出,两种输出方式都属于同向输出。各触发器都采用同一时钟信号,所以它们工作在同步状态。如果将FD的输出端QD接到FA的输入端DI,则可以构成循环移位的右移位寄存器。

    右移寄存器

    并行输入串行输出

    module right_shift_pin_sout(
        clk    ,
        rst_n  ,
        //其他信号,举例dout
        sout,
        pin    
        );
    
        //参数定义
        parameter      DATA_W =         4;
        parameter    CNT_W=2;
    
        //输入信号定义
        input               clk    ;
        input               rst_n  ;
        input [DATA_W-1: 0] pin    ;
    
        //输出信号定义
        output  sout   ;
    
    
    
        //中间信号定义
        reg[CNT_W-1: 0]     cnt    ;
        wire [DATA_W-1: 0]   D    ;
    
        reg [DATA_W-1: 0]   Q    ;
        //计数
        always@(posedge clk or negedge rst_n)begin
            if(rst_n==1'b0)begin
                cnt<=0;
            end
            else begin
                if(cnt==DATA_W-1)begin
                    cnt<=0;
                end
                else begin
                    cnt<=cnt+1;
                end
             end
        end
        //D
        assign D=(cnt==0)?pin:4'b0;
        assign sout=Q[3];
        //sout
        always  @(posedge clk or negedge rst_n)begin
            if(rst_n==1'b0)begin
                sout<=0;
            end
            else begin
                sout<=Q[3];
            end
        end
    //Q
        always  @(posedge clk or negedge rst_n)begin
            if(rst_n==1'b0)begin
                Q<=0;
            end
            else if(cnt==0)begin
                Q<=D;
            end
            else begin
                Q[3:1]<=Q[2:0]; 
            end
        end
    
    
    
        endmodule
    
    
    

    tb

     `timescale 1 ns/1 ns
    
    module testbench_name();
    parameter      DATA_W =         4;
    parameter    CNT_W=2;
    //时钟和复位
    reg clk  ;
    reg rst_n;
     
    wire sout;  
    reg[DATA_W-1: 0]  pin ; 
            //时钟周期,单位为ns,可在此修改时钟周期。
            parameter CYCLE    = 20;
    
            //复位时间,此时表示复位3个时钟周期的时间。
            parameter RST_TIME = 3 ;
    
            //待测试的模块例化
            right_shift_pin_sout 
            #(.DATA_W(DATA_W),.CNT_W(CNT_W))  uut(
           .clk    (   clk    ), 
           .rst_n  (   rst_n  ), 
           .sout   (  sout   ),
           .pin    (   pin    ) 
                )  ;  
            
    
                //生成本地时钟50M
                initial begin
                    clk = 0;
                    forever
                    #(CYCLE/2)
                    clk=~clk;
                end
    
                //产生复位信号
                initial begin
                    rst_n = 1;
                    #2;
                    rst_n = 0;
                    #(CYCLE*RST_TIME);
                    rst_n = 1;
                end
    
                //输入信号pin赋值方式
                initial begin
                    #1;
                    //赋初值
                    pin =4'b1111;
                    #(9*CYCLE);
                    pin=4'b1000;
                    #(9*CYCLE);
                    pin=4'b0010;
                    #(9*CYCLE);
                    pin=4'b0001;
                    //开始赋值
    
                end
    
    endmodule
    
    
    
    展开全文
  • 它内建的CMOS位移寄存器与锁存功能,可以将串行输入数据转换成平行输出数据格式。芯片的输入电压范围值为3.3伏特至5伏特,提供16个恒定电流源,可以在每个输出级提供 3-45mA 的恒定电流量以驱动 LED。  特点: ...
  • 它内建的CMOS位移寄存器与锁存功能,可以将串行输入数据转换成平行输出数据格式。芯片的输入电压范围值为3.3伏特至5伏特,提供16个恒定电流源,可以在每个输出级提供 3-45mA 的恒定电流量以驱动 LED。  特点: ...
  • 移位寄存器专题(verilog HDL设计)

    万次阅读 多人点赞 2018-05-19 21:09:11
    3、串行输入并行输出寄存器 4、并行输入串行输出移位寄存器 移位寄存器简介 移位寄存器内的数据可以在移位脉冲(时钟信号)的作用下依次左移或右移。移位寄存器不仅可以存储数据,还可以用来实现数据的串并转换、...

    目录

    移位寄存器简介

    分类

    4位右移位寄存器工作原理

    1、 16位右移位寄存器

    2、 16位左移寄存器

     3、 串行输入并行输出寄存器

    4、 并行输入串行输出移位寄存器


    移位寄存器简介

    移位寄存器内的数据可以在移位脉冲(时钟信号)的作用下依次左移或右移。移位寄存器不仅可以存储数据,还可以用来实现数据的串并转换、分频,构成序列码发生器、序列码检测器,进行数值运算以及数据处理等,它也是数字系统中应用非常广泛的时序逻辑部件之一。

    分类

    移位寄存器按数据移位方向可以分为左移寄存器、右移寄存器、也可以根据数据输入、输出方式分为并行输入/串行输出、串行输入/并行输出、串行输入/串行输出、并行输入/并行输出。

    4位右移位寄存器工作原理

    下图是一个4位右移位寄存器的逻辑电路图。其工作原理为:串行数据从触发器F_{A}D_{I}端输入,触发器FA的状态方程为:Q^{n+1}_{A}=Q^{n}_{I}。其余触发器的状态方程分别为Q^{n+1}_{B}=Q^{n}_{A}Q^{n+1}_{C}=Q^{n}_{B}Q^{n+1}_{D}=Q^{n}_{C}。可见,右移位寄存器的特点是右边寄存器的次态等于左边触发器的现态。串行输出数据从触发器FD的QD端输出,并行数据从个触发器的QA~QD端输出,两种输出方式都属于同向输出。各触发器都采用同一时钟信号,所以它们工作在同步状态。如果将FD的输出端QD接到FA的输入端DI,则可以构成循环移位的右移位寄存器。

     

                                         4位右移位寄存器逻辑电路

     

    1、 16位右移位寄存器

    下面描述的是一个位宽为16位的右移位寄存器,实际具有环形移位的功能,是在右移位寄存器的基础上将最低位的输出端接到最高位的输入端构成的。其功能为当时钟上升沿到达时,输入信号的最低位移位到最高位,其余各位依次向右移动一位。

     

    其verilog HDL设计代码如下:

     

    1. module register_right(clk, din, dout);  
    
    2.     input clk;  
    
    3.     input [15:0] din;  
    
    4.     output [15:0] dout;  
    
    5.     reg [15:0] dout;  
    
    6.   
    
    7.     always @(posedge clk)  
    
    8.         begin  
    
    9.             dout <= {din[0], din[15:1]};  
    
    10.         end  
    
    11. endmodule  

    其测试文件为:

    1. `timescale 1ns/1ps  
    
    2. module register_right_tb;  
    
    3.     reg clk;  
    
    4.     reg [15:0] din;  
    
    5.     wire [15:0] dout;  
    
    6.     always  
    
    7.         begin  
    
    8.         #10 clk = ~clk;  
    
    9.         end  
    
    10.     initial  
    
    11.         begin  
    
    12.             clk = 1'b0;  
    
    13.             din = 16'b0000_0000_0000_0000;  
    
    14.             #10 din = 16'b0000_0000_0000_1011;  
    
    15.             #20 din = 16'b0000_0000_0111_0000;  
    
    16.             #20 din = 16'b0000_0000_0000_0011;  
    
    17.             #100;  
    
    18.         end  
    
    19.     register_right U1(.clk(clk), .din(din), .dout(dout));  
    
    20.   
    
    21. endmodule  

    在Modelsim中仿真得到的波形图如下:

      

    2、 16位左移寄存器

    同右移位寄存器原理一致,下面直接给出verilog HDL 设计代码:

    1. module register_left(clk, din, dout);  
    
    2.     input clk;  
    
    3.     input [15:0] din;  
    
    4.     output [15:0] dout;  
    
    5.     reg [15:0] dout;  
    
    6.       
    
    7.     always @(posedge clk)  
    
    8.         begin  
    
    9.             dout <= {din[14:0], din[15]};  
    
    10.         end  
    
    11. endmodule  

    测试文件为:

    1. `timescale 1ns/1ps  
    
    2. module register_left_tb;  
    
    3.     reg clk;  
    
    4.     reg [15:0] din;  
    
    5.     wire [15:0] dout;  
    
    6.       
    
    7.     always  
    
    8.         #10 clk = ~clk;  
    
    9.           
    
    10.     initial  
    
    11.         begin  
    
    12.             clk = 1'b0;  
    
    13.             din = 16'b0000_0000_0000_0000;  
    
    14.             #10 din = 16'b0000_0000_0000_0011;  
    
    15.             #20 din = 16'b0000_0000_0011_0000;  
    
    16.             #100;  
    
    17.         end  
    
    18.           
    
    19.     register_left U1(.clk(clk), .din(din), .dout(dout));  
    
    20. endmodule  

    在Modelsim中仿真所得波形图如下:

     

     3、 串行输入并行输出寄存器

    下面描述一个位宽为8的串行输入并行输出的寄存器,其实现的功能为:1位数据的串行输入,8位数据的并行输出。当时钟上升沿到达时,1位输入数据din进入qtemp的最低位,qtemp的其余各位依次向左移动1位,在assign 赋值语句中,将qtemp连续赋值给dout,实现8位的数据并行输出。

     其verilog HDL设计代码为:

    1. module left_shifter_reg(clk, din, dout);  
    
    2.     input clk;  
    
    3.     input din;  
    
    4.     output [7:0] dout;  
    
    5.     wire [7:0] dout;  
    
    6.     reg [7:0] qtemp;  
    
    7.     always @ (posedge clk)  
    
    8.         begin  
    
    9.             qtemp <= {qtemp[6:0], din}; //每次输入一位  
    
    10.         end  
    
    11.     assign dout = qtemp; //并行输出  
    
    12.   
    
    13. endmodule  

    测试文件为:

    1. module left_shifter_reg_tb;  
    
    2.     reg din;  
    
    3.     reg clk;  
    
    4.     wire [7:0] dout;  
    
    5.       
    
    6.     always   
    
    7.         #10 clk = ~clk;  
    
    8.       
    
    9.     initial  
    
    10.         begin  
    
    11.             clk = 1'b0;  
    
    12.             #100 din = 1'b1;  
    
    13.             #100 din = 1'b1;  
    
    14.             #100 din = 1'b0;  
    
    15.         end  
    
    16.           
    
    17.     left_shifter_reg U1(.din(din), .clk(clk), .dout(dout));  
    
    18. endmodule  

     在Modelsim中仿真所得波形图:

      

    4、 并行输入串行输出移位寄存器

     

    下面描述一个位宽为8的并行输入串行输出的寄存器,其实现的功能为:当使能端 en = 1时,将输入数据din存入一个8位的中间变量,然后在每个时钟上升沿到来时,将qtemp的最低端输出,然后再将qtemp右移一位,从而实现将din输入数据从最低位到最高位依次串行输出。

     

    其verilog HDL设计代码为:

    1. module right_shifter_reg(clk, en, din, dout);  
    
    2.     input [7:0] din;  
    
    3.     input en,clk;  
    
    4.     output dout;  
    
    5.     reg dout;  
    
    6.     reg [7:0] qtemp;  
    
    7.     always @(posedge clk)  
    
    8.         begin  
    
    9.             if(en == 1)  
    
    10.                 qtemp <= din;  
    
    11.             else  
    
    12.                 begin  
    
    13.                     dout <= qtemp[0];  
    
    14.                     qtemp <= {qtemp[0], qtemp[7:1]};  
    
    15.                 end  
    
    16.         end  
    
    17.   
    
    18. endmodule 

    测试文件为:

    1. `timescale 1ns/1ps  
    
    2. module right_shifter_reg_tb;  
    
    3.     reg [7:0] din;  
    
    4.     reg clk;  
    
    5.     reg en;  
    
    6.     wire dout;  
    
    7.       
    
    8.     always  
    
    9.         #10 clk = ~clk;  
    
    10.       
    
    11.     initial  
    
    12.         begin  
    
    13.             clk = 0;  
    
    14.             en = 1'b0;  
    
    15.             #10 en = 1'b1;  
    
    16.             din = 8'b1110_0010;  
    
    17.             #20 en = 1'b0;  
    
    18.             #100;  
    
    19.         end  
    
    20.     right_shifter_reg U1(.clk(clk), .en(en), .din(din), .dout(dout));  
    
    21.   
    
    22. endmodule  

    在Modelsim中仿真所得波形图如下:

     

     

    展开全文
  • (5) 保持:寄存器予置任意4位二进制数码abcd,令=1,S1=S0=0,加CP脉冲,...1.实现数据的串、并行转换(1)串行输入并行输出按图8-3-3-3接线,进行右移串入、并出实验,串入数码自定;改接线路用左移方式实现并...
  • 当第一个CP脉冲到来后,寄存器输出状态Q0~Q7为01111111,与此同时S1S0变为01,转换电路变为执行串入右移工作方式,串行输入数据由1片的SR端加入。随着CP脉冲的依次加入,输出状态的变化可列成表7-3所示。由表7-...
  • 一、背景 老同学今天突然咨询关于74HC595,自己没用过,同学说可以级联10级!... 74HC595为1个8位串行移位输入寄存器带1个存储寄存器,并可8位带锁存并行输出串行移位输入寄存器 和存储寄存器分别有独自的时钟...
  • 串行工作模式之同步移位寄存器输入输出方式 主要用于扩展并行输入或输出口。数据有RXD(P3.0)引脚输入输出,同步移位脉冲由TXD(P3.1)引脚输出。发送和接受均为8位数据。低位在前,高位在后。 //串行口...
  • 74HC595 - 串行并行

    2020-07-14 17:44:36
    移位寄存器存储串行输入的数据,锁存寄存器锁存移位寄存器内的数据。 1)SHIFT CLOCK:移位时钟输入引脚,上升沿将数据串行输入; 2)SERIAL DATA INPUT:串行数据输入引脚; 3)RESET:清空移位寄存器中数据,低电平有效...
  • 74HC164、74HCT164 是 8 位边沿触发式移位寄存器串行输入数据,然后并行输出。 数据通过两个输入端(DSA 或 DSB)之一串行输入;任一输入端可以用作高电平使能端,控制另一输入端的数据输入。两个输入端或者连接...
  • 串行输入并行输出,每8bit为一个字节输出。使用3位寄存器cnt作为计数器,计数到7之后,cnt+1变成0;输出字节时,需要进行判断。cnt = 1时,写入1位;cnt = 7时,写入了7位,所以cnt = 0输出字节。verilog 代码如下...
  • 4.能够右移串行输入并行输出(串并转换); 5.能够并行输入、右移串行输出(并串转换)。 相关知识 寄存器(Register)的功能是存储二进制代码,它是由具有存储功能的触发器组合起来构成的。一个触发器可以存储1位...
  • 74HC164、74HCT164 是 8 位边沿触发式移位寄存器串行输入数据,然后并行输出。 数据通过两个输入端(DSA 或 DSB)之一串行输入;任一输入端可以用作高电平使能端,控制另一输入端的数据输入。两个输入端或者连接...
  • 移位寄存器(shift_reg) 在数字电路中,移位寄存器是一种在...根据移位数据的输入-输出方式,又可将它分为串行输入-串行输出、串行输入并行输出、并行输入-串行输出和并行输入-并行输出四种电路结构。 移位寄...
  • 移位寄存器是指寄存器中所存的代码能够在移位脉冲的作用下...Q0~Q3为并行输出端;SR--右移串引输入端;SL--左移串引输入端;S1、S0-操作模式控制端; -为直接无条件清零端;CP-为时钟脉冲输入端。74LS194功能特征根据...
  • 几种标准外部接口输入/输出接口与主机内部所有模块的连接是通过计算机的系统总线完成的,接口与外部设备连接的部分则是系统总线通过接口向外的延伸,它是采用标准的接口实现连接的。通常,称它为外部接口。相对内部...
  • 移位寄存器是指寄存器中所存的代码能够在移位脉冲的作用下...Q0~Q3为并行输出端;SR--右移串引输入端;SL--左移串引输入端;S1、S0-操作模式控制端; -为直接无条件清零端;CP-为时钟脉冲输入端。74LS194功能特征根据...
  • 1.串行加法器串行加法器即加法器执行位串行行操作,利用多个时钟周期完成一次加法运算,即输入操作数和输出结果方式为随时钟串行输入/输出。位并行加法器速度高,但是占用资源多。在许多实际应用中并不需要这样高的...
  • 串并转换寄存器

    2020-10-29 11:24:19
    以1位串行输入/8位并行输出为例,当时钟沿来临时,将1位输入数据存入临时寄存器–Qtemp的最低位,Qtemp的[6:0]向左移动1位,用连续赋值语句,将Qtemp中的值赋给输出Q,实现8位数据的并行输出。 2.并行输入/串行输出 ...
  • 寄存器和ioremap的使用

    2020-12-21 17:14:33
    移位寄存器中的数据可以在移位脉冲作用下依次逐位右移或左移,数据既可以并行输入、并行输出,也可以串行输入、串行输出,还可以并行输入、串行输出,或串行输入并行输出,十分灵活,用途也很广。 2.寄存器的大小...
  • 移位寄存器

    2020-12-09 01:57:52
    移位寄存器是暂时存放数据的部件,同时它还具有移位功能。 一、特点和分类 从逻辑结构上看,移位寄存器...移位寄存器的数据输入方式有串行输入并行输入之分。串行输入就是在时钟脉冲作用下,把要输入的数据从一个
  • 说明:串行数据由 RXD 发送给串 并转换芯片 74164,TXD 则用于输出移位时钟脉冲,74164 将串行输入的 1 字节转换为并行数据,并将转换的数据通过 8 只 LED 显示出来。本例串口工作模式 0,即移位寄存器 I/O 模式。
  • QA--QH: 八位并行输出端,可以直接控制数码管的8个段。 QH': 级联输出端。我将它接下一个595的SI端。 SI: 串行数据输入端。 74595的控制端说明: /SCLR(10脚): 低点平时将移位寄存器的数据
  • 74HC165并行数据转串行数据

    千次阅读 2012-11-21 00:53:44
    74HC165 概述 (NXP founded by Philips) ...74HC165是8位并行读取或串行输入移位寄存器,可在末级得到互斥的串行输出(Q7和Q7),当并行读取(PL)输入为低时,从D0到D7口输入的并行数据将被异步地读取进寄存器内。
  • 工作时,数据从RXD串行输入/输出,TXD输出移位脉冲,使外部的移位寄存器移位。波特率固定为fosc/12(即,TXD每机器周期输出一个同位脉冲时,RXD接收或发送一位数据)。每当发送或接收完一个字节,硬件置TI=1或RI=1,...

空空如也

空空如也

1 2 3 4 5 ... 12
收藏数 229
精华内容 91
关键字:

串行输入并行输出寄存器