解:依据题意,可给出如下的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)。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)