移位寄存器实现Verilog代码:

`timescale 1ns / 1ps

module add(
input clk,
input reset,
input [1:0] s,
input dl,
input dr,
input [3:0] d,
output reg [3:0] q
);
always @(posedge clk or negedge reset)
if (~reset) begin
q <= 4'b0000;
end else begin
case(s)
2'b00: q <= q; //保持
2'b01: q <= {q[2:0],dr}; //右移
2'b10: q <= {dl,q[3:1]}; //左移
2'b11: q <= d; //置数
endcase
end
endmodule

仿真代码

`timescale 1ns / 1ps

module conter_t;

	// Inputs
reg clk;
reg reset;
reg [1:0] s;
reg dl;
reg dr;
reg [3:0] d; // Outputs
wire [3:0] q; // Instantiate the Unit Under Test (UUT)
add uut (
.clk(clk),
.reset(reset),
.s(s),
.dl(dl),
.dr(dr),
.d(d),
.q(q)
); parameter PERIOD = 20; always begin
clk = 1'b0;
#(PERIOD/2) clk = 1'b1;
#(PERIOD/2);
end initial begin
// Initialize Inputs
clk = 0;
reset = 0;
s = 0;
dl = 0;
dr = 0;
d = 0; // Wait 100 ns for global reset to finish
#40;
reset = 1;
d = 4'b1011; // Add stimulus here
s = 2'b11; //置数
#40;
s = 2'b01; //右移
#100;
s = 2'b11; //置数
#40;
s = 2'b10; //左移
#100;
s = 2'b11; //置数
#40;
s = 2'b00; //保持
#100;
end endmodule

仿真波形:

总结:由于没有人给予指导,在调试的过程中,一直被一个问题困扰,问题及解决办法描述如下。

本来想要测试程序的移位功能时,我想的是给q(输出)一个初始值,然后设定模式为移位模式,让q在时钟脉冲的作用下移位并进行观察。于是在仿真程序中,对q进行幅值操作,但是默认生成的仿真程序模板中,q为wire类型,不允许幅值,于是手动改为reg类型(实现程序中为了对q赋值,就是需要定义q为reg类型,所以我理所当然的认为这里也要这样改写)。

但是这样操作之后的现象是:仿真程序中对q的值的改变语句均生效,但是源程序中对q值的改变语句无效,寻找很久未果。

后来发现,其他的仿真的程序中似乎都没有把输出变量设定为reg类型,即没有在仿真程序中修改输出变量的值。

因此想到,将q恢复为默认的wire类型,在仿真程序中对d赋值,然后通过移位寄存器的置数功能将d的值传递给q,上述问题得到解决。

如有问题,欢迎交流。

——cloud over sky

——2019/11/26

Xilinx ISE多功能移位寄存器仿真及Basys2实验板实验的更多相关文章

  1. 87.在ModelSim中添加Xilinx ISE仿真库

    在ModelSim中添加Xilinx ISE仿真库 说明: l ModelSim一定要安装在不带空格的目录下,即不要安装在“Program Files”目录下.如作者是安装在D:\softwares\ ...

  2. Xilinx ISE Design Suite 14.7 ISim 简单仿真

    1.创建完项目(以Xilinx ISE Design Suite 14.7开发流程的例子    led例子   为例),编译通过,我们就可以对这个项目进行仿真: 2.然后切换到simulation,然 ...

  3. 如何用ModelSim对Xilinx ISE产生的网表进行仿真

    图: 在对设计的芯片进行测试时,经常要用到FPGA,可是里面的仿真工具却不如Modelsim那么好用,且在规模比较大时,ISE在仿真时,软件经常会报告内存限制的问题,此时一般会切换到Modelsim软 ...

  4. Xilinx ISE如何调用Modelsim进行联合仿真

    图: 在对设计的芯片进行测试时,经常要用到FPGA,可是里面的仿真工具却不如Modelsim那么好用,且在规模比较大时,ISE在仿真时,软件经常会报告内存限制的问题,此时一般会切换到Modelsim软 ...

  5. ISE和Modelsim联合仿真(转)

    相信很多人会遇到过这个问题,不知如何让ISE调用Modelsim进行仿真.我也迷糊了不少时间,查查找找,终于弄明白了,所以有了本文,和大家分享一下.我尽量讲得详细点儿,多多上图. 我的环境:Windo ...

  6. ISE和Modelsim联合仿真(详细步骤讲解)

    ISE和Modelsim联合仿真(转) 地址:http://www.cnblogs.com/feitian629/archive/2013/07/13/3188192.html 相信很多人会遇到过这个 ...

  7. FPGA课设-基于Xilinx Basys2开发板的除法器设计

    介绍一下Basys开发板: Basys2 FPGA开发板是一个电路设计实现平台,任何人都可以通过它来搭建一个真正的数字电路.Basys2是围绕着一个Spartan-3E FPGA芯片和一个Atmel ...

  8. Ubuntu 14.04 安装 Xilinx ISE 14.7 全过程

    生命在于折腾. 这个帖子作为我安装xilinx ISE 14.7版本一个记录.希望给需要的人一些帮助,这些内容绝大部分也是来源于互联网. 软硬件: lsb_release -a No LSB modu ...

  9. Ubuntu 14.04 安装 Xilinx ISE 14.7 全过程(转)

    reference:https://www.cnblogs.com/tracyone/p/3561781.html 按照ISE后,建立ISE启动连接: 这个帖子作为我安装xilinx ISE 14.7 ...

随机推荐

  1. 面试官没想到一个Volatile,我都能跟他扯半小时

    点赞再看,养成习惯,微信搜索[三太子敖丙]关注这个互联网苟且偷生的工具人. 本文 GitHub https://github.com/JavaFamily 已收录,有一线大厂面试完整考点.资料以及我的 ...

  2. css的属性选择器

    语法说明: 属性选择器需要将对应属性放入到 方括号中  [ ] ,其中包含属性名,标识符(* $ ~ ^ |) 使用说明: [attribute] 例如  [target] 表示 选择带有 targe ...

  3. 阿里云函数计算上部署.NET Core 3.1

    使用阿里云ECS或者其他常见的VPS服务部署应用的时候,需要手动配置环境,并且监测ECS的行为,做补丁之类的,搞得有点复杂.好在很多云厂商(阿里云.Azure等)提供了Serverless服务,借助于 ...

  4. 看直播 csust oj

    看直播 Description 小明喜欢看直播,他订阅了很多主播,主播们有固定的直播时间 [Li, Ri] . 可是他网速只有2M,不能同时播放两个直播,所以同一时间只能看一个直播. 并且他只会去看能 ...

  5. 线段树的区间合并 B - LCIS

    B - LCIS HDU - 3308 这个是一个很简单很明显的线段树的区间合并,不过区间合并的题目都还是有点难写,建议存个板子. #include <cstdio> #include & ...

  6. mac安装vue-devtools

    mac安装vue devtools 1.到github下载vue tool 的压缩包 正常的方法:git clone https://github.com/vuejs/vue-devtools 但事实 ...

  7. spring的单元测试

    如果spring 4.3.18这个版本的spring要使用junit,需要使用junit的junit-4.12之上的版本.使用这个版本junit的时 候需要引入hamcrest-all的jar包.之前 ...

  8. NSNotification,NSNotificationCenter的使用、iOS中五种对象间传值的方式

    学习内容 NSNitification与NotificationCenter(通知与通知中心) 通知的使用 [[NSNotificationCenter defaultCenter]addObserv ...

  9. 选择结构(if、switch)

    3.2  用if语句实现选择结构 什么是选择结构 单分支if语句 双分支if语句 多分支if语句 1.什么是选择结构? 选择结构又称为分支结构,是根据给定的条件是否成立来决定程序的执行流程. 用if语 ...

  10. 这么多Linux版本,你究竟该怎么选择?

    Linux有非常多的版本,比如世面上常见的有 Ubuntu.RedHat.Fedora.Centos等等,这么多的版本我们究竟该选哪一个呢?今天我带大家对各个版本进行一下分析和比较,帮助大家来做出更好 ...