当前位置:   article > 正文

实例七— 8位移位寄存器的设计_设计一个含有预置数,左移,右移和保持功能的8位寄存器

设计一个含有预置数,左移,右移和保持功能的8位寄存器

实例七 8位移位寄存器的设计(基于Robei工具的8位移位寄存器的设计)

4.1.1. 本章导读

设计目的
要求掌握8位移位寄存器原理,并根据原理设计8位移位寄存器模块以及设计相关testbench,最后在Robei可视化仿真软件进行功能实现和仿真验证。
设计准备
有一个8比特的数据(初值设为10011100)和一个移位设置数据s,根据s的值不同,产生不同的移位。这里规定移位的方向是向右,由于是8比特,因此s的变化范围为0到7。

4.1.2. 设计流程

1. shift模型设计

(1)新建一个模型命名为shift,类型为module,同时具备5个输入和1个输出,每个引脚的属性和名称参照图4-1-1进行对应的修改。
在这里插入图片描述
在这里插入图片描述
(2)添加代码。点击模型下方的 Code添加代码。
代码:
always@(posedge clk or negedge clr)
begin: shift_reg
if(clr)
data_out <= 8’b0;
else if(en)
begin
case(set[2:0])
3’b0: data_out <= data_in[7:0];
3’b1: data_out <= {data_in[0],data_in[7:1]};
3’d2: data_out <= {data_in[1:0],data_in[7:2]};
3’d3: data_out <= {data_in[2:0],data_in[7:3]};
3’d4: data_out <= {data_in[3:0],data_in[7:4]};
3’d5: data_out <= {data_in[4:0],data_in[7:5]};
3’d6: data_out <= {data_in[5:0],data_in[7:6]};
3’d7: data_out <= {data_in[6:0],data_in[7]};
default: data_out <= data_in[7:0];
endcase
end
end

(3)保存模型到一个文件夹(文件夹路径不能有空格和中文)中,运行并检查有无错误输出。

2. shift_test测试文件设计

(1)新建一个具有5个输入和1个 输出的shift_test测试文件,记得将Module Type设置为“testbench”,各个引脚配置如图4-1-3所示。
在这里插入图片描述
(2)另存为测试文件。将测试文件保存到上面创建的模型所在的文件夹下。
(3)加入模型。在 Toolbox工具箱的 Current栏里会出现模型,单击该模型并在shift _test上添加,并连接引脚,如下图4-1-4所示:
在这里插入图片描述
(4)输入激励。点击测试模块下方的“Code”,输入激励算法。激励代码在结束的时候要用$finish 结束。
测试代码:
initial begin
clock=0;
clr=0;
en=1;
data=8’b10011100;
set=0;
#1 clr=1;
#2 clr=0;
#4

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号