Xilinx ISE多功能移位寄存器仿真及Basys2实验板实验
移位寄存器实现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实验板实验的更多相关文章
- 87.在ModelSim中添加Xilinx ISE仿真库
在ModelSim中添加Xilinx ISE仿真库 说明: l ModelSim一定要安装在不带空格的目录下,即不要安装在“Program Files”目录下.如作者是安装在D:\softwares\ ...
- Xilinx ISE Design Suite 14.7 ISim 简单仿真
1.创建完项目(以Xilinx ISE Design Suite 14.7开发流程的例子 led例子 为例),编译通过,我们就可以对这个项目进行仿真: 2.然后切换到simulation,然 ...
- 如何用ModelSim对Xilinx ISE产生的网表进行仿真
图: 在对设计的芯片进行测试时,经常要用到FPGA,可是里面的仿真工具却不如Modelsim那么好用,且在规模比较大时,ISE在仿真时,软件经常会报告内存限制的问题,此时一般会切换到Modelsim软 ...
- Xilinx ISE如何调用Modelsim进行联合仿真
图: 在对设计的芯片进行测试时,经常要用到FPGA,可是里面的仿真工具却不如Modelsim那么好用,且在规模比较大时,ISE在仿真时,软件经常会报告内存限制的问题,此时一般会切换到Modelsim软 ...
- ISE和Modelsim联合仿真(转)
相信很多人会遇到过这个问题,不知如何让ISE调用Modelsim进行仿真.我也迷糊了不少时间,查查找找,终于弄明白了,所以有了本文,和大家分享一下.我尽量讲得详细点儿,多多上图. 我的环境:Windo ...
- ISE和Modelsim联合仿真(详细步骤讲解)
ISE和Modelsim联合仿真(转) 地址:http://www.cnblogs.com/feitian629/archive/2013/07/13/3188192.html 相信很多人会遇到过这个 ...
- FPGA课设-基于Xilinx Basys2开发板的除法器设计
介绍一下Basys开发板: Basys2 FPGA开发板是一个电路设计实现平台,任何人都可以通过它来搭建一个真正的数字电路.Basys2是围绕着一个Spartan-3E FPGA芯片和一个Atmel ...
- Ubuntu 14.04 安装 Xilinx ISE 14.7 全过程
生命在于折腾. 这个帖子作为我安装xilinx ISE 14.7版本一个记录.希望给需要的人一些帮助,这些内容绝大部分也是来源于互联网. 软硬件: lsb_release -a No LSB modu ...
- Ubuntu 14.04 安装 Xilinx ISE 14.7 全过程(转)
reference:https://www.cnblogs.com/tracyone/p/3561781.html 按照ISE后,建立ISE启动连接: 这个帖子作为我安装xilinx ISE 14.7 ...
随机推荐
- SpringBoot:整合Shiro
目录 1.Shiro简介 1.1.什么是Shiro? 1.2.有哪些功能 1.3.Shiro架构(外部) 1.4.Shiro架构(内部) 2.HelloWorld 3.Shiro整合Spring Bo ...
- Java IO流(二)
目录 字节缓冲流 概述 BufferedOutputStream类 继承父类的共性成员方法 构造方法 BufferedInputStream类 继承自父类的方法: 构造方法 文件复制练习(增强版 使用 ...
- docker-compose安装rabbitmq
编写时间:2020-05-08 参考文档:docker安装rabbitmq 1. 编写docker-compose.yml version: '3' services: rabbitmq: image ...
- 13_JavaScript基础入门(3)
条件分支语句 条件分支语句,也叫作条件判断语句,就是根据某种条件执行某些语句,不执行某些语句. JS中有三种语法是可以表示条件分支的. 1.if--else-- 条件分支的主力语法,这个主力语法能够书 ...
- SSM + MYSQL 酒店客房管理系统
酒店客房管理系统的设计与实现是采用JSP技术,MYSQL数据库进行开发的.系统具有灵活的一体化设计方式,圆满完成了整个系统的全面设计,系统主要采用JSP技术开发,提高系统的运行性能和安全性,并且易于维 ...
- JVM 虚拟机&&类加载(一)
虚拟机 虚拟机简介 Java 虚拟机(JVM)是运行java程序的抽象计算机,它是计算机设备的规范,可以采用不同方式进行实现,java 程序通过运行在JVM中实现跨平台,一次编译到处运行,不同的操作系 ...
- Jmeter-Throughput Controller 吞吐量控制器
比如在压测是时候,我设置了100个线程组,循环2次,那么我想根据吞吐量进行并发请求,这时候可以用到这个吞吐量控制器 PercentExecutions:按执行次数的百分比来计算执行次数,Through ...
- Spark Streaming 基本操作
Spark Streaming 基本操作 一.案例引入 3.1 StreamingContext 3.2 数据源 3.3 服务的启动与停止二.Transf ...
- go多种uuid生成方式
package main import ( "fmt" "github.com/chilts/sid" "github.com/kjk/betterg ...
- Centos 编译带调试信息的libevent
libevent编译过程 查看libevent文档即可 解决cmake编译出来的可执行文件没有调试信息(该方法未实验,暂时对cmake不熟悉) SET(CMAKE_BUILD_TYPE "D ...