EDA双向8位十六进制移位寄存器程序

EDA双向8位十六进制移位寄存器程序,第1张

解:依据题意,可给出如下的verilog代码:

----------------------------------------------------------------

module shift8(serinleft,serinright,mode,clk,reg7,reg6,reg5,reg4,reg3,reg2,reg1,reg0)

input [3:0] serinleft

input [3:0] serinright

input [1:0] mode

input clk

output [4:0] reg7,reg6,reg5,reg4,reg3,reg2,reg1,reg0

reg [4:0] reg7,reg6,reg5,reg4,reg3,reg2,reg1,reg0

always @(posedge clk)

case (mode)

2'b00:

begin

reg7 <= 4'h0

reg6 <= 4'h0

reg5 <= 4'h0

reg4 <= 4'h0

reg3 <= 4'h0

reg2 <= 4'h0

reg1 <= 4'h0

reg0 <= 4'h0

end

2'b01:

begin

reg7 <= serinleft

reg6 <= reg7

reg5 <= reg6

reg4 <= reg5

reg3 <= reg4

reg2 <= reg3

reg1 <= reg2

reg0 <= reg1

end

2'b10:

begin

reg7 <= reg6

reg6 <= reg5

reg5 <= reg4

reg4 <= reg3

reg3 <= reg2

reg2 <= reg1

reg1 <= reg0

reg0 <= serinright

end

default:

begin

reg7 <= 4'h0

reg6 <= 4'h0

reg5 <= 4'h0

reg4 <= 4'h0

reg3 <= 4'h0

reg2 <= 4'h0

reg1 <= 4'h0

reg0 <= 4'h0

end

endcase

endmodule

---------------------------------------------------------------------

为了对上述代码进行仿真,可给出如下的testbench。

---------------------------------------------------------------------

module tb

reg [3:0] dataleft

reg [3:0] dataright

reg clk

reg [1:0] mode

wire [3:0] reg7,reg6,reg5,reg4,reg3,reg2,reg1,reg0

initial begin

dataleft <= 4'h0

dataright <= 4'h0

clk <= 1'b0

repeat(60)

 #10 begin dataleft <= dataleft + 1'b1dataright <= dataright + 2end

end

initial begin

mode <= 2'b00

#200 mode <= 2'b01

#200 mode <= 2'b10

#200 $stop

end

always

#5 clk <= ~clk

shift8 x1(dataleft,dataright,mode,clk,reg7,reg6,reg5,reg4,reg3,reg2,reg1,reg0)

endmodule

---------------------------------------------------------------------------

利用上述testbench,经由Modelsim仿真,可得如下图所示的波形图

                 图1左移时的的仿真波形( mode=2'b01)

图2 右移时的仿真波形(mode=2'b10)

寄存器 在数字电路中,用来存放二进制数据或代码的电路称为寄存器。寄存器是由具有存储功能的触发器组合起来构成的。一个触发器可以存储一位二进制代码,存放N位二进制代码的寄存器,需用n个触发器来构成。按功能可分为:基本寄存器和移位寄存器。移位寄存器移位寄存器中的数据可以在移位脉冲作用下一次逐位右移或左移,数据既可以并行输入、并行输出,也可以串行输入、串行输出,还可以并行输入、串行输出,串行输入、并行输出,十分灵活,用途也很广。1、74LS194移位寄存器的控制输入端S1和S0是用来进行移位方向控制的,S0为高电平时,移位寄存器处于向左移位的工作状态,二进制数码在CP脉冲的控制下由高到低逐位移入寄存器,因此可以实现串行输入;在S1为低电平时,移位寄存器处于向右移位的工作状态,二进制数码在CP脉冲的控制下逐位移出寄存器(低位在前,高位在后)。2、在串行输入、并行输出的转换中,若将四位二进制数码全部送入寄存器内(四位寄存器)。由于每个CP脉冲移位寄存器只移一位,四位二进制数码需要四个CP脉冲。

如何用161构成移位寄存器

答:寄存器为有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和地址。在中央处理器的控制部件中,包含的寄存器有指令寄存器(IR)和程序计数器(PC)。在中央处理器的算术及逻辑部件中,寄存器有累加器(ACC)。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/7734181.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-09
下一篇 2023-04-09

发表评论

登录后才能评论

评论列表(0条)

保存