精华内容
下载资源
问答
  • LabVIEW的移位寄存器

    2021-01-19 23:05:03
    在循环结构中经常用到一种数据处理方式,即把第i次循环执行的结果作为...移位寄存器的颜色和输入数据类型的系统颜色相同,在数据为空(没有输入)时是黑色。  图1 添加移位寄存器  图2 For循环结构中的移位寄存
  • 在循环结构中经常用到一种数据处理方式,即把第i次循环执行的结果作为...移位寄存器的颜色和输入数据类型的系统颜色相同,在数据为空(没有输入)时是黑色。  图1 添加移位寄存器  图2 For循环结构中的移位寄存
  • verilog 移位寄存器与流水灯

    千次阅读 2019-02-03 16:03:51
    用Verilog写一个简单的多功能移位寄存器,并在移位寄存器的基础上进行修改,利用移位功能形成流水灯的效果 基本的功能如下: 寄存器示意图见下方虚拟面板图 两种改进方式: 第一种是把最后一个功能改成循环右移,...

    用Verilog写一个简单的多功能移位寄存器,并在移位寄存器的基础上进行修改,利用移位功能形成流水灯的效果
    基本的功能如下:
    在这里插入图片描述
    寄存器示意图见下方虚拟面板图
    有两种改进方式:
    第一种是把最后一个功能改成循环右移,即此功能模式下,按一下时钟按键(代表时钟信号到来),高三位往右移一位,最低位移动到最高位。按一次移位一次,形成流水灯效果
    第二种在第一种的基础上把按键时钟改成接入内部时钟,每隔一段时间时钟信号来临一次,无需手动操作,形成自动移位的流水灯效果

    基本功能的移位寄存器的主要文件Virtual_Lab_Top.v中的代码:

    //移位寄存器实验
    `default_nettype none 
    module Virtual_Lab_Top 
    (
        input  wire  CLOCK,
        input  wire  [4:0] BUTTON, //按键
        input  wire [35:0] SWITCH, //开关
        output wire [35:0] LED,    //指示灯 
        output wire  [3:0] HEX0,   //数码管
    	 output reg   [3:0] Z
    ); 
    
    //输入端口赋值给内部信号
    wire C    = BUTTON[1];
    wire R    = BUTTON[0];
    wire E    = SWITCH[6];
    wire f1   = SWITCH[5];
    wire f0   = SWITCH[4];
    wire [3:0] X = SWITCH[3:0];
    
    //实验逻辑
    wire i;
    wire [3:0] D;
    assign i = f1&~f0&Z[3];
    assign D = {4{~f1&f0}}&X|{4{f1&i}};
    
    always @ (posedge C or posedge R)
    begin
    	if(R)
    		Z<=0;
    	else if(C&E&~f1)
    		Z<=D;
    	else
    		Z<={i,Z[3:1]};
    end
    
    //内部信号赋值给输出端口(指示灯)观察
    assign LED[3:0]  = Z[3:0];
    
    //内部信号赋值给输出端口(数码管)观察
    assign HEX0 = D;
    
    endmodule
    

    第一种改进后主要文件Virtual_Lab_Top.v中的代码:

    //流水灯实验
    `default_nettype none 
    module Virtual_Lab_Top 
    (
        input  wire  CLOCK,
        input  wire  [4:0] BUTTON, //按键
        input  wire [35:0] SWITCH, //开关
        output wire [35:0] LED,    //指示灯 
    	 output reg   [3:0] Z
    ); 
    
    //输入端口赋值给内部信号
    wire C    = BUTTON[1];
    wire R    = BUTTON[0];
    wire E    = SWITCH[6];
    wire f1   = SWITCH[5];
    wire f0   = SWITCH[4];
    wire [3:0] X = SWITCH[3:0];
    
    //实验逻辑
    wire i;
    assign i = f1&~f0&Z[3];
    
    always @ (posedge C or posedge R)
    begin
    	if(R)
    		Z<=0;
    	else if(C&E&~f1&~f0)
    		Z<={Z[0],Z[3:1]};
    	else if(C&E&~f1&f0)
    		Z<=X;
    	else
    		Z<={i,Z[3:1]};
    end
    
    //内部信号赋值给输出端口(指示灯)观察
    assign LED[3:0]  = Z[3:0];
    
    endmodule
    

    第二种改进:
    把第一种改进的代码中的 wire C = BUTTON[1]; 这条语句删掉,然后把 always @ (posedge C or posedge R) 语句中的C改成CLOCK。我们要接入内部时钟,所以要先把按键时钟删掉。
    加入分频器文件clock_divider.v,采用的是偶分频方法。一般板子的晶振频率太高,所以要将原有时钟频率分频降低,常见板子的晶振频率为50MHz,以这个频率为标准,在工程中的JuLabPocket_TOP.v文件中,将直接接入原频率的语句 wire CLOCK = CLOCK_50; 删去,然后在该文件合适处加入下列语句

    //------------ 时钟 --------------------------------------------------------// 
    	wire CLOCK_divided;
    	//使用时钟分频器模块产生1kHz的时钟。可以修改RATIO参数改变输出频率。
    	clock_divider #(.RATIO(10000000)) clk_inst(.clkin(CLOCK_50), .rst(1'b0), .clkout(CLOCK_divided));
    
       wire CLOCK = CLOCK_divided;  //用分频后的CLOCK_divided作为时钟
     
    

    这样调用了分频器给时钟信号变量接入分频后的频率,如果流水灯移位的速度还是太快,可以把参数RATIO调大,太慢就调小,建议直接在后面加一个0或减一个0或着减半

    完整的工程文件我已经上传到CSDN了,可以去我的主页查看并下载完整的工程文件进行使用,压缩包中有三个文件夹,对应三个版本的完整工程文件,基础版本的是shifter文件夹,第一种改进的是led文件夹,第二种改进的是CLOCK & led文件夹,若CLOCK & led文件夹的工程文件不能在Quartus II中正常打开,则把文件夹名中的&符号删掉再打开即可
    前两种版本的工程内包含文件如下图,第三种的多了一个clock_divider.v:
    在这里插入图片描述
    WeLab虚拟面板设置图片:

    在这里插入图片描述
    以上为基础版本,第一种改进版本删去数码管,第二种改进版本删去clock时钟对应的按键
    X输入数据,f1、f0是输入控制位F的高位和地位,数码管表示选择器的结果,enable开关置1则使能,置0则不使能,重置按键重置显示结果,按键时钟按下即代表时钟信号来临一次

    注意:接入内部时钟的时候虚拟实验板由于软件的接收静态数据原因可能显示不出来流水灯的自动移位动态效果,但实际板子上会有效果显示出来,实际板子上分配的led灯真的会有流水灯的自动移位动态效果,如果是使用实际的实验板可以观察实验板

    展开全文
  • 移位寄存器的功能和电路形式较,按移位方向分左移、右移、和双向移位寄存器;按接收数据方式分为串行输入和并行输入;按输出方向分为串行输出和并行输出。 如果将若干个触发器级联成如下图所示电路,则构成基本...

    移位寄存器(左移、右移、双向)的Verilog实现
    移位寄存器的功能和电路形式较多,按移位方向分有左移、右移、和双向移位寄存器;按接收数据方式分为串行输入和并行输入;按输出方向分为串行输出和并行输出。
    如果将若干个触发器级联成如下图所示电路,则构成基本的移位寄存器。图中是一个4位移位寄存器,串行二进制数据从输入端Dsi输入,左边触发器的输出作为右邻触发器的数据输入。若将串行数码D3D2D1D0从高位(D3)至低位(D0)按时钟脉冲间隔依次送到Dsi端,经过第一个时钟脉冲后,Q0=D3。由于跟随D3后面的是D2,因此经过第二个时钟脉冲后,触发器FF0的状态移入触发器FF1而FF0转变为新的状态,即Q1=D3,Q0=D2。以此类推,输入数码依次由左侧触发器移到右侧触发器。经过4个时钟脉冲后,4个触发器的输出状态Q3Q2Q1Q0与输入数码D3D2D1D0相对应。这样,就将串行输人数据转换为并行输出数据Dpo。
    在这里插入图片描述
    一般来说,N位移位寄存器要由N个触发器构成,需要N·Tcp来完成串行到并行的数据转换,同样也需要N・Tcp来实现并行到串行的数据输出。这里,Tcp为时钟周期。从上述操作可以看出,移位寄存器只能用脉冲边沿敏感的触发器,而不能用电平敏感的锁存器来构成,因为在时钟脉冲高电平期间,锁存器输出跟随输入变化的特性将使移位操作失去控制。显然,移位寄存器属于同步时序电路。
    1.基本移位
    首先说明“由于国家标准规定,逻辑图中最低有效位(LSB)到最高有效位(MSB)的电路排列顺序应从上到下,从左到右。因此定义移位寄存器中的数据从低位触发器移向高位为右移,反之则为左移。这一点与通常计算机程序中规定相反,后者从自然二进制数的排列考虑,将数据移向高位定义为左移,反之为右移。”此内容摘自《电子技术基础-数字部分》康华光主编教材。

    module shifter( din, clk, rst, dout,done);
    input din, clk, rst;
    output [7:0] dout;
    output reg done; //完成移位
    reg [7:0] dout;
    reg [3:0] cnt;
    always @(posedge clk)
    begin
    if(rst) //清零
    dout <= 8’b0;
    else if(cnt<=4’d7)
    begin
    dout<=dout>>1; //左移
    dout[7]<=din;
    /*dout <= dout<<1;
    dout[0] <= din; */ //右移
    end
    else
    dout<=dout;
    end

    always@(posedge clk)
    begin
    	if(rst)
    	  begin
    		cnt<=4'd0;
    		done<=1'b0;
    		end
    	else if(cnt==4'd7)
    		begin
    		cnt<=4'd0;
    		done<=1'b1;			
    		end
    	else begin
    		cnt<=cnt+1'b1;
    		done<=1'b0;
    		end					
    end
    

    endmodule
    在这里插入图片描述
    仿真结果图

    2.双向移位
    双向移位实现数据保持、右移、左移、并行置数、并行输出。
    module two_way(
    input clk,
    input rst,
    input s0,s1, //选择输入端口
    input din1,din2, //串行数据输入
    input [3:0] d, //并行数据输入
    output reg [3:0] q //输出端口
    );

    always@(posedge clk or negedge rst)
    begin
    	if(!rst)
    		q<=4'd0;
    	else begin
    		case({s1,s0})
    		2'b00:  q<=q;  //输出保持不变
    		2'b01:  q<={q[2:0],din1};  //右移
    		2'b10:  q<={din2,q[3:1]};  //左移
    		2'b11:  q<=d;         //并行置数
    		endcase
    		end
    end
    

    endmodule
    在这里插入图片描述
    仿真结果图
    总结一般掌握左移、右移方法即可,并根据实际需求加以应用,串并转换也适用。

    展开全文
  • : 桶式移位寄存器是 C P U ...高和推广, 许 用户开始用 F P G A实现微处理器的功能, 其中桶式移位寄存器的设计对系统的性能较大的影响。 本文提 出了三种桶式3 2移位寄存器的设计和实现方法, 给出了实现结果。
  • 什么是复用工功能输入输出?复用功能输入输出类似于:房间《--》大厅《--》门《--》室外关系;从房间到室外,需要经过大厅,在经过大门才可以到达...  4) 每一个IO管脚复用功能有,都是由“GPIO 复用功能寄存
  • 74LS系列集成块功能介绍 74ls00 2输入四与非门 74ls01 2输入四与非门 (oc) 74ls02 2输入四或非门 74ls03 2输入四与非门 (oc) 74ls04 六倒相器 74ls05 六倒相器(oc) ...74ls395 4位通用移位寄存器...
  • 它用一个LFSR(线性反馈移位寄存器)生成伪随机的位模式,并通过临时配置成串行移位寄存器的触发器,将这个位模式加到待测电路上。数字BIST亦用相同的触发器捕获响应,将移出的结果压缩成一个数字标志,再将其与一个...
  • 它用一个LFSR(线性反馈移位寄存器)生成伪随机的位模式,并通过临时配置成串行移位寄存器的触发器,将这个位模式加到待测电路上。数字BIST亦用相同的触发器捕获响应,将移出的结果压缩成一个数字标志,再将其与一个...
  • CPU 内存操作理解

    2020-02-13 10:33:30
    数电课本上基础数字电路设计,例如移位寄存器,地址选择存储器等,这些都是构成CPU,MCU等庞大集成电路基础。我理解芯片内存上寻址,数据存储都是与或非门集合,这点FPGA中体现非常明显。 我们在...

    数电课本上有很多基础数字电路设计,例如移位寄存器,地址选择的存储器等,这些都是构成CPU,MCU等庞大集成电路的基础。我理解的芯片内存上寻址,数据存储都是与或非门的集合,这点FPGA中体现的非常明显。

    我们在学习任何一款芯片时,学习到寄存器操作外设,外设的寄存器是一段具有特殊功能的内存单元,意思就是根据数据手册操作这段内存,就可以得到你想要的效果。

    图1是寄存器操作简图,如何与图2这种基础数字电路对应。寄存器操作首先都会寻址,寻址就是地址仲裁,仲裁就是课本上比较器原理,地址锁存的电平信号经比较器后将一路ram的片选信号拉高,假设拉高有效。4片RAM公用同一根数据线,这就和课堂上经常听到的,一根数据总线,通过寻址方式确定给谁赋值。芯片内部都是电路,可以认为都是与或非门,如图2。当某一块片选被拉高,RAM内部电路通过移位寄存器,锁存器,将数据线上的一个个高低变化的电平信号,锁存下来,高低变化的电平就是我们认为bit信息。这就是你不断写内存的操作。移位寄存器,锁存器都是数电上的,仔细想想。课本上的都是精华部分。--------如有错误,望指出。

     

    展开全文
  • FPGA片内多的存储器资源,可以配置成单端口ROM、RAM和双端口ROM、RAM,以及移位寄存器和FIFO等。在学习过程中,笔者遇到过几个小问题,总结如下: 片内是不是ROM或者RAM? 个人观点:片内没有ROM...

      FPGA的片内有很多的存储器资源,可以配置成单端口的ROM、RAM和双端口的ROM、RAM,以及移位寄存器和FIFO等。在学习过程中,笔者遇到过几个小问题,总结如下:

            片内是不是有ROM或者RAM?

            个人观点:片内没有ROM或者RAM的,有的只是一些功能比较强大的存储器块,可以通过配置变成我们想要的功能。例如将RAM的wren端子和data端子直接接地,那么就变成了ROM。片内有的是一些M9K、M4K等等,M9K代表容量为9Kbits的存储器。

            选择组成存储器的类型以及存储器块的最大深度?

    图1

      

    个人观点:对于这两个的话,建议选择“AUTO”。下图是官方给出的建议:

    图2

    图3

      对于RAM和ROM模式,q输出段是否应该被寄存?

            个人观点:其实寄存也好,不被寄存也好,结果只是输出的是不是会延迟一个时钟周期。但是笔者建议q应该被寄存一下。在RAM或者ROM中,地址被寄存,而最终的输出是用的组合逻辑进行输出,如果q被引用时也经过了大量的逻辑,那么存储器中的逻辑和被引用时的逻辑就会组成一个比较大的逻辑,整个设计的速度就会变慢。

     

            对于RAM和ROM模式,是否应该引出rden信号?

            个人观点:之前我在学习中,rden从来没有引出过,因为自己的设计自己知道,什么时候去读,只要正确的时序就可以了,近期接触到官方文档后,官方推荐引出rden信号,用于降低功耗。

    图4

      在RAM模式中,如果出现对于同一个地址进行读写会出现什么情况?

      

    图5

      

      个人观点:之前学习中,这个界面几乎从来没有关系过,直接都是略过,保持默认值不变。近期考虑这个问题,查看官方手册,此项可以选择New Data、Old Data和Donot Care,默认值是New Data。

            这个问题可以分为两个方向考虑:

            同一个端口同时读写,那么时序如下:

    图6

    图7

      对于不同的端口来说,只有Old DATA,don’t care就不关心了。

    图8

      对于初始化文件.hex或者.mif文件,当存储器发生写入时,文件内容没有发生改变?

            个人观点:.hex或者.mif文件并没有被下板,只是综合器在综合时,将文件中的内容读取出来,配置给存储器而已,本身文件和下板没有关系,所以在仿真也好,或者下板也好,对于存储器的写入并不会改变文件中的值。对于经常使用.txt初始化的设计者,结果也是一样的,.txt的内容并不会被改变。

     

            使用reg [n-1:0] reg_name [m-1:0]定义存储器。

            个人观点:此种方法是可以定义存储器的,但是经过笔者实际测试,不同的深度和位宽会影响综合器选择存储器块还是LE构成,并且会综合器在综合过程中会产生很多的警告。笔者在公司研发,使用此种方式进行存储器定义使用,被领导批评过。具体的原因有待发掘,在此,笔者建议设计者在设计时,如果要用到存储器,利用IPCore的插件向导完成还是比较好的。

    笔者将上文中所用的存储器官方资料都放到了,QQ群:173560979群文件中,如果有需要的可以下载。

    笔者水平有限,如果设计中,有什么不妥的地方,恳请大佬们指出来。

      欢迎加好友探讨QQ(奋斗的小孩郝旭帅):746833924,QQ群:173560979。

    转载于:https://www.cnblogs.com/fendoudexiaohai/p/9544828.html

    展开全文
  • 在CoolRunner-II器件每个功能块中16个独立宏单元,每个宏单元由触发器、路选择器及时钟资源等构成,如图1所示。  图1 CoolRunner-II宏单元结构 宏单元中触发器可以构成普通触发器、锁存器和双沿...
  • 在CoolRunner-II器件每个功能块中16个独立宏单元,每个宏单元由触发器、路选择器及时钟资源等构成,如图1所示。  图1 CoolRunner-II宏单元结构 宏单元中触发器可以构成普通触发器、锁存器和双沿...
  • 摘要:TLC5902是美国Texas Instruments公司生产专门用于图像显示LED驱动芯片,该器件集移位寄存器、数据锁存器于一体,同时带电流值调整恒流电路以及脉宽调制256级灰度显示恒流驱动器。文中介绍了该器件主要...
  • 串行接口基本特点

    千次阅读 2015-01-27 16:26:23
    MCS-51单片机的串行端口4种...方式2、3除方式1的功能外,还可以作机通信,以构成分布式微机系统。  串行端口两个控制寄存器SCON、PCON,用于设置工作方式、发送或接收的状态、特征位、数据传送波特率[每秒
  • 74194是通用4位移位寄存器,S0和S1控制四选一的多路复用器,异步清零 上面功能表疑似问题 欢迎探讨 移位寄存器构建环型模4计数器,数据表来自德州仪器 问题:电路受到干扰后无法进行自校正 鼠标...
  • 实验十八:驱动74HC595 概述: 74HC595 是一款漏极开路输出CMOS 移位寄存器,输出端口为可控三态输出端,亦能串行输出控制下一级级联芯片。 特点: ...一定会朋友会问这个问题,我想问是...
  • 这次课程设计任务要求设计路彩灯控制器。...在彩灯路数较少,花型变换比较简单时,也可以移位寄存器实现。在实际应用场合彩灯可能是功率较大发光器件,需要加以一定驱动电路。本课题用发光二极管LED模拟彩灯。
  • (接上期http://www.dzsc.com/data/html/2011-9-8/98278.html)欲了解更信息... ③移位寄存器的数据输入端中,串行数据输入端标注“D”字符,并行数据输入端标注“P1、P2、P3、P4…”字符,如图11 所示。 图
  • (接上期https://www.dzsc.com/data/html/2011-9-8/98278.html)欲了解更信息,请... ③移位寄存器的数据输入端中,串行数据输入端标注“D”字符,并行数据输入端标注“P1、P2、P3、P4…”字符,如图11 所示。
  • “中继”: 该键为局内交换切向中继交换的功能按键,按下此键,再按“确认”键进行确认,则工作模式由局内交换切换为中继交换,显示器循环显示“d”,此时方可通过中继拨打“长途”电话。按“复位”键重启系统,进入...
  • 74系列芯片中文手册

    2014-01-26 16:26:21
    74HC589 输入锁存的并入串出移位寄存器 74HC590 带输出寄存器的8位二进制计数器 74HC591 带输出寄存器的8位二进制计数器 74HC592 带输出寄存器的8位二进制计数器 74HC593 带输出寄存器的8位二进制计数器 74HC...
  • 关于串口方工作式

    2016-07-28 13:58:00
    单片机89C51的串行端口4种工作方式,通过编程设计,可以使其工作在任一方式,以满足不同... 方式2、3除方式1的功能外,还可用作机通信,以构成微机系统,方式2、3的区别在于波特率的不同。      ...
  • 5.1 习题(20)

    2020-06-05 07:57:43
    通用寄存器是可编程的多功能寄存器 6, 标志寄存器PWR,FR是运算器一部分,当前指令执行结果状态信息 控制信息:允许中断,中断置位指令 为CPU做出一些判断:转移指令、中断指令提供依据 7, CPU位数是指...
  • TMS320VC5402 是 TI 第七代 DSP 产品之一,它具有优化 CPU 结构,内部 1 个 40 位算术逻辑单元(包括一个 40 位桶式移位寄存器和 2 个独立 40 位累加器),一个 17×17 乘法器和一个 40 位专用加法器...
  • 74HC595 简单说来就是具有8 位移位寄存器和一个存储器,以及三态输出功能。 这里我们用它来控制8 个LED 小灯。我们为什么要用74HC595 来控制小灯呢?一定会朋友会问这个问题,我想问是我们要是单纯用...
  • OD反汇编语言解释.doc

    2010-11-28 18:54:03
    在字符串操作指令的执行过程中,对它们特定的要求,而且还具有特殊的功能。 3、指针寄存器 其低16位对应先前CPU中的BP和SP,对低16位数据的存取,不影响高16位的数据。 32位CPU2个32位通用寄存器EBP和ESP。 它们...
  • 10. DOS功能调用的功能号是 ( ) ① 10H ② 11H ③ 13H ④ 21H 二、填空题(每空2分,共20分) 1.8086CPU中,堆栈指令是________位数据传送指令。 2. 8088在访问4个当前段时,代码段、数据段及...
  • 1)运算器的功能主要包括算术运算和逻辑运算以及移位补位等辅助运算。 2)运算器的核心是算术逻辑单元(ALU)。 3)运算器的操作种类来源于控制器,操作的数值来源于存储器。处理结果往往返回存储器(也可以暂时保存...
  • 汇编语言程序设计 第二版

    热门讨论 2012-08-12 14:23:02
    9.5.1 条件汇编伪指令的功能 9.5.2 条件汇编伪指令的举例 9.6 宏的扩充 9.6.1 宏定义形式 9.6.2 重复伪指令REPEAT 9.6.3 循环伪指令WHILE 9.6.4 循环伪指令FOR 9.6.5 循环伪指令FORC 9.6.6 转移伪指令GOTO 9.6.7 宏...

空空如也

空空如也

1 2 3
收藏数 51
精华内容 20
关键字:

多功能移位寄存器的功能有