【计算机组成与体系结构Ⅰ】实验7 IP核的使用、D触发器

news2024/11/14 20:27:17

一、实验目的

1:学会设计用IP核和原理图的方式设计电路,完成涉及1位数据的2选1多路选择器。

2:设计带异步置零和写使能端的D触发器。

二、实验环境

  1. 软件:Vivado 2015.4
  2. 操作系统:Windows 10

三、实验内容

2.2.1 多路选择器的设计
1:添加IP核文件

 

2:添加bd文件,在Block Design界面中进行设计


3:放置门电路及端口

 
4:添加仿真文件并仿真

 

 

 


5:管脚分配

由于本实验不需要进行硬件实验,故2.2.1至此完毕

 

2.3.1 D触发器的设计

1:设置输入输出端口

2:编写源程序文件

 3:编写仿真程序文件

4 :仿真得到模拟图

 

四、分析Verilog 程序的功能,并编写仿真测试程序

源程序分析:

module reg8(
input clk, // 输入时钟信号
            input clrn, // 输入清除信号
            input wen, // 输入写使能信号
            input [7:0] d, // 输入数据信号
            output [7:0] q // 输出数据信号
            );
  reg [7:0] p; // 定义一个 8 位寄存器变量 p

  always @(posedge clk or negedge clrn) // 在时钟上升沿或清除信号下降沿时执行以下语句
    if(!clrn) // 如果清除信号为 0
      p <= 0; // 将寄存器清零
    else if (!wen) // 如果写使能信号为 0
      p <= d; // 将寄存器更新为输入数据信号

  assign q = p; // 将输出数据信号连接到寄存器变量 p 上
endmodule // 模块定义结束

仿真程序:

module reg8_sim;

  // Inputs
  reg clk;
  reg clrn;
  reg wen;
  reg [7:0] d;

  // Outputs
  wire [7:0] q;

  // Instantiate the module to be tested
  reg8 dut (
    .clk(clk),
    .clrn(clrn),
    .wen(wen),
    .d(d),
    .q(q)
  );

  // Clock generator
  always #5 clk = ~clk;

  // Testbench logic
  initial begin
    // Initialize inputs
    clk = 0;
    clrn = 1;
    wen = 0;
    d = 0;

    // Wait for a few clock cycles
    #10;

    // Reset the module
    clrn = 0;
    #5 clrn = 1;

    // Wait for another few clock cycles
    #10;

    // Write some data to the module
    wen = 1;
    d = 8'hAB;
    #5 wen = 0;

    // Wait for a few more clock cycles
    #10;

    // Read the data from the module
    wen = 0;
    #5;
    $display("q = %h", q);

    // Finish the simulation
    #10;
    $finish;
  end
endmodule

仿真结果:

 

五、总结实验中遇到问题和解决方法

遇到的问题:

1:mux2x1verilog源文件在实验指导中存在一定问题,在仿真时c的输出为Z,即无输出。

解决的办法:

1:将源文件修改如下

module mux2x1verilog(

    input a,

    input b,

    input s,

    output c

    );

    wire a1,b1,sel;

    notgate_0 u0(.a(s),.c(sel));

    andgate_0 u1(.a(a),.b(sel),.q(a1));

    andgate_0 u2(.a(s),.b(b),.q(b1));

    orgate_0 u3(.a(a1),.b(b1),.q(c));

endmodule

 

由于实验指导里面未写入与门和或门的逻辑,因此无法正确运行程序。错误的仿真结果如下图:

 

根据代码语义分析后,可以得到a1为与门1的输出、b1为与门2的输出,sel为非门的输出。根据电路图重写语句后,仿真结果符合预期。

其他说明:

Exp_2文件夹中,Exp_2、mux2x1verilog为2.2.1的实验内容,dffe为2.3.1的实验内容,reg8为第四部分的实验内容。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/735445.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

49天精通Java,第38天,类加载器,双亲委派机制

目录 一、类加载器子系统的作用1、加载2、链接3、初始化 二、验证【虚拟机必须保证一个类的<clinit>()方法在多线程下被同步加锁】的代码实例三、类加载器的分类1、启动类加载器&#xff08;引导类加载器&#xff09;2、扩展类加载器3、应用程序类加载器&#xff08;系统…

字典dict的get和setdefault,以及collections的defaultdict

一&#xff1a;dict的get和setdefault 首先&#xff0c;字典dict的get和setdefault的用法都是xxx(key, value)&#xff0c; 都是在字典中查找指定的键并返回值&#xff0c;当查找的key键在字典中存在时&#xff0c;两者作用相同。 参考&#xff1a;https://blog.csdn.net/any1…

「深度学习之优化算法」(十)烟花算法

1. 烟花算法简介 (以下描述,均不是学术用语,仅供大家快乐的阅读)   烟花算法(Firework Algorithm,FWA)是一种受烟花爆炸产生火星,并继续分裂爆炸这一过程启发而得出的算法。算法的思想简单,但具体实现复杂。算法提出时间并不长,但是已经有了不少的改进研究和较为全…

【动手学习深度学习--逐行代码解析合集】11实战Kaggle比赛:预测房价

【动手学习深度学习】逐行代码解析合集 11实战Kaggle比赛&#xff1a;预测房价 视频链接&#xff1a;动手学习深度学习–实战Kaggle比赛&#xff1a;预测房价 课程主页&#xff1a;https://courses.d2l.ai/zh-v2/ 教材&#xff1a;https://zh-v2.d2l.ai/ 1、下载和缓存数据集 …

【JavaEE初阶】JavaScript(WebAPI)

文章目录 1.WebAPI背景知识1.1什么是WebAPI1.2什么是API 2.DOM基本概念2.1什么是DOM2.2常用的DOMAPI2.2.1.选中页面元素2.2.2操作元素的属性1. 事件概念2.获取/修改元素内容3. 获取/修改元素属性4.获取/修改表单元素属性5.获取修改样式属性 2.2.3.操作页面节点1.新增节点2.删除…

关联数组不是线性表

百度百科给的关联数组的解释是&#xff1a; “关联数组”是一种具有特殊索引方式的数组。不仅可以通过整数来索引它&#xff0c;还可以使用字符串或者其他类型的值&#xff08;除了NULL&#xff09;来索引它。 关联数组类似于哈希表&#xff0c;有键-索引&#xff0c;它包含标量…

nunittest如何生成测试报告?我来告诉你

目录 HTMLTestRunner 小试牛刀 1、在unittest中编写测试用例 2、添加报告路径已经报告内容 3、批量执行用例&#xff0c;导入测试报告内容中 4、当然是赶快执行查看报告内容啊 4、添加用例注释&#xff0c;增加报告完整性 总结&#xff1a; 我们做测试的人员们都知道测…

【mysql】—— 数据库基础

序言&#xff1a; 在上期&#xff0c;我们已经安装好了【mysql】。在本期&#xff0c;我将给大家介绍关于数据库的基本知识。 目录 &#xff08;一&#xff09;登陆选项 &#xff08;二&#xff09;基本介绍 1、什么是数据库 2、主流数据库 3、见一见数据库 4、服务器管…

使用matplotlib画图时,建立双坐标轴

在进行数据的可视化分析时&#xff0c;可能我们分析的两个指标&#xff0c;他们的取值区间相差很大&#xff0c;如果采用一个y轴&#xff0c;就不利于我们观察另一个指标。所以&#xff0c;记录一下我在项目的处理过程中采用的方法&#xff1a; 首先观察一下&#xff0c;我用到…

MAYA粒子碰撞颜色collisionU,collisionV

if (nParticleShape1.collisionU >0) { float $UnParticleShape1.collisionU; float $VnParticleShape1.collisionV; vector $colRGB colorAtPoint -o RGB -u $U -v $V ramp2; nParticleShape1.rgbPP $colRGB; } 获取 UV 向量处的颜色 vector $colRGB colorAtPoin…

【C51 介绍发光二极管LED】

51单片机项目基础篇 前篇&#xff1a;介绍发光二极管LED1、认识发光二极管LED1.1、二极管1.2、二极管的特性 2、LED简介3、结束语 前篇&#xff1a;介绍发光二极管LED 前言&#xff1a; (1).我们已经认识了 51 单片机芯片和 51 单片机最小系统。 (2).现在进入一些基础的实验阶…

23.07.09

完善对话框功能 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget) {ui->setupUi(this);// this->setWindowOpacity(0); } Widget::~Widget() {delete ui; } //字体对应的槽 voi…

常见的页面标签

一、基本标签 <p>段落标签</p> 换行且有空行 hn(1-6) 标题标签 <h1>一级标题</h1> <h2>二级标题</h2> <h3>三级标题</h3> ..... <br> <br /> <br/> 换…

3.8.使用cuda核函数加速yolov5后处理

目录 前言1. Yolov5后处理2. 后处理案例2.1 cpu_decode2.2 gpu_decode 总结 前言 杜老师推出的 tensorRT从零起步高性能部署 课程&#xff0c;之前有看过一遍&#xff0c;但是没有做笔记&#xff0c;很多东西也忘了。这次重新撸一遍&#xff0c;顺便记记笔记。 本次课程学习精简…

Zabbix自动报表功能

一、简介 从zabbix 5.4体验版本发布时提供了很多新特性&#xff0c;当然现在最新的Zabbix6.0 LTS版本的定时导出PDF报表功能相对稳定&#xff0c;但如果需要满足日常运维报表需求还是有一段比较长的路要走。总而言之相比以前版本此功能可谓是一大突破。可按照Dashboard维度&am…

计网之体系结构(一)

计网之体系结构&#xff08;一&#xff09; 计算机网络概述计算机网络的概念计算机网络的功能计算机网络的发展计算机网络发展第一阶段计算机网络发展第二阶段&#xff08;三级结构&#xff09;计算机网络发展第三阶段&#xff08;多层次ISP结构&#xff09; 概念&#xff0c;功…

Redis常用面试题

Redis为什么执行这么快&#xff1f; 1.基于内存存储实现。 我们都知道内存读写比在磁盘快很多的&#xff0c;Redis基于内存储存实现的数据。相对于数据库存在磁盘的MySql数据库&#xff0c;剩余磁盘I/O的消耗 2.redis是单线程模型的&#xff0c;而单线程避免了CPU不必要的上…

Python 导入引用其他文件的函数(不断更新)

文章目录 构造初始化文件结构&#xff0c;以此为例。【1】导入同目录且同级下其他文件的函数&#xff08;c.py文件导入d.py文件的函数&#xff09;&#xff08;1&#xff09;只引入d.py文件&#xff08;2&#xff09;直接引入函数&#xff08;3&#xff09;引入全部函数 【2】导…

抓包看TCP协议

抓包看TCP协议 前言一、三次握手1.1 为什么需要握手&#xff1f;1.2 为什么需要三次握手&#xff1f; 二、四次挥手2.1 为何需要挥手&#xff1f;2.2 为何需要四次挥手&#xff1f; 三、抓个包看看 后记参考 前言 在计算机的世界中&#xff0c;通信双方的交互一般要通过网络这个…