【计算机组成与体系结构Ⅰ】实验6 熟悉Vivado及MINISYS-1实验系统

news/2024/11/30 2:26:02/

一、实验目的

1:熟悉Vivado的开发环境及开发流程,掌握Vivado中Verilog HDL文本输入设计方法,包括仿真、综合、实现与下载。熟悉Minisys开发板的功能和使用方法。

2:学会可配置IP核的设计与封装方法,深入理解与门逻辑。

二、实验环境

软件:Vivado 2015.4;

硬件:MINISYS-1开发板;

三、实验内容

3.1 拨码开关与LED灯(熟悉vivado和实验台)

1:创建项目

使用Vivado创建一个新项目,项目类型选择为RTL,不增加源文件、IP核、约束文件等,选择器件为xc7a100tfgg484-1,最后点击完成Finish。

2:添加源代码


添加设计文件,创建设计文件Ex_1,设置sw和led管脚数目及输入输出。将设计文件Ex_1中的源代码替换为实验指导中的代码,实现将拨码开关sw的内容赋值给led。管脚的相关设置和替换的代码如下图所示:

 

 


3:仿真


为了检查电路设计的正确性,添加仿真文件Ex_1_sim,将仿真文件Ex_1_sim中的源代码替换为实验指导中的代码,实现对Ex_1模块的例化,初始化sw=0,每隔10ns将sw加一。替换的代码如下图所示:


之后点击Run Similation,运行仿真文件Ex_1_sim,将仿真时间调整为10ns,仿真后得到波形图。该波形图上下相同,每隔10ns可以使sw的值自动加一。仿真的波形图如下图所示:

 

4:综合


点击Run Synthesis,运行综合情况。若无问题,则弹出窗口。窗口如下图所示:

 

5:管脚分配
点击Layout-I/O Planning,打开管脚分配表。将I/O Std这一列全部改为LVCMOS33,并点击site改变管脚分配。管脚分配表如下图所示:

 

 

设置完成后,按ctrl+s保存管脚设置,生成约束文件led_lights,完成后关闭综合设计窗口。

6:实现


    点击Run Implementation,对设计进行实现,实现完成后弹出窗口。窗口如下图所示:

 

7:产生比特流文件并下载


    在6中弹出的窗口处选择Generate Bitstream并确定,完成后弹出新窗口。新窗口如下图所示:

 

选择硬件管理界面并确认,点击open target。用USB下载线将电脑主机与Minisys开发板相连,同时将电源线连接开发板。之后选择xc7a100t_0,将比特流文件下载到开发板中。下载完成后,用拨码开关控制Minisys开发板,发现LED灯会随着对应的拨码开关的打开而点亮。

3.2 可配置输入端口数和数据宽度的与门IP核设计

1:创建并仿真andgate项目

创建一个andgate项目,在andgate.v文件中设置andgate模块。模块如下图所示:

 建立仿真1位8输入的情况,在andgate_sim.v文件中设置andgate_sim模块。模块如下图所示:

 

 按照3.1的方法进行仿真,获得仿真波形图。仿真波形图如下图所示:

 在仿真文件中,我们将c、d、e、f、g、h这6个输入均设置为1,因此q会随着a、b输入的变化而变化。从仿真结果中可以发现,当a、b任意一个输入为0的时候,q的输出也为0,满足与门的逻辑。

2:测试32位与门
在andgate32_sim.v文件中设置andgate32_sim模块。模块如下图所示:

 

 按照3.1的方法进行仿真,获得仿真波形图。仿真波形图如下图所示:

 

分析仿真结果后可知,实验具备正确性。

3:综合并封装IP核
仿真andgate模块并综合,之后设置IP并封装。IP的设计如下图所示:

 

添加IP核所支持的芯片家族,除了artix7以外全部选择,Life-circle选择Production。之后设置Port_Num参数、WIDTH参数等。再在端口存在栏中选择Optional,表明端口的存在有条件,在启动表达式编辑框中输入$Port_Num>2,表明当输入端口大于2的时候,c端口被启用。同理,设置d、f、g、h端口的参数。最终的设置结果如下图所示:

 最后IP生成到CSE_CSE_andgate_1.0.zip压缩包中,完成IP核的封装。压缩包如下图所示:

 

四、问题回答

1:总结在可配置输入端口数和数据宽度的“与门”IP 核实验中遇到的问题和解决的方法。

问题:

1:在加入多个模拟文件后并点击run simulation的时候,会发生运行冲突。

2:在观察波形的时候,波形图点击全局观察后仍出现不符合预期的效果。

3:在MINISYS-1开发板上,发现加载比特流后,拨动开关后的LED显示结果与预期不符合。

解决方法:

1:查看.v文件的属性,将其中不需要模拟的文件的使能端Enable处取消勾选,再点击run simulation进行模拟。

2:在波形图处点击ctrl+鼠标中间键,对波形图进行人为的放大和缩小处理,直至符合预期为止。

3:重新对管脚进行分配,原实验指导中的表格有一定问题。

2:约束文件所起作用?

约束文件在Verilog中用于描述设计的物理限制和时序要求。它包含了时钟频率、时序延迟、输入输出时序、时钟分频等信息,以确保设计符合所需的输入输出特性。约束文件可以帮助避免时序冲突等问题,从而提高设计的稳定性和可靠性。

3:请用Verilog HDL实现一个8位全加器,提供源文件和仿真文件。

源文件代码为:

module full_adder_8bit(input [7:0] A, input [7:0] B, input cin, output [7:0] S, output cout);wire [7:0] c;assign c[0] = cin;genvar i;generatefor(i=0;i<8;i=i+1)begin: adderfull_adder fa(A[i],B[i],c[i],S[i],c[i+1]);end
endgenerateassign cout = c[7];endmodulemodule full_adder(input a, input b, input cin, output s, output cout);assign s = a ^ b ^ cin;assign cout = (a & b) | (a & cin) | (b & cin);endmodule

仿真文件代码为:

`timescale 1ns / 1psmodule full_adder_8bit_tb;reg [7:0] A, B;
reg cin;
wire [7:0] S;
wire cout;full_adder_8bit DUT(.A(A), .B(B), .cin(cin), .S(S), .cout(cout));initial begin// test case 1A = 8'b00000000;B = 8'b00000000;cin = 0;#10;if (S !== 8'b00000000 || cout !== 0)$error("Test case 1 failed!");// test case 2A = 8'b11111111;B = 8'b00000001;cin = 0;#10;if (S !== 8'b00000000 || cout !== 1)$error("Test case 2 failed!");// test case 3A = 8'b00000000;B = 8'b00000001;cin = 1;#10;if (S !== 8'b00000001 || cout !== 0)$error("Test case 3 failed!");// test case 4A = 8'b11111111;B = 8'b11111111;cin = 1;#10;if (S !== 8'b11111111 || cout !== 1)$error("Test case 4 failed!");$display("All test cases passed!");$finish;
endendmodule

仿真波形图如下所示:

 

由仿真波形图可知,四个测试案例均仿真正确,符合理论的实验结果。

五、实验总结

  1. 逻辑组合元件是数字电路中的一类元件,它们的输出仅取决于它们的输入,而与电路的时序状态无关。逻辑组合元件可以执行逻辑运算,例如与、或、非、异或等,用于处理二进制数据信号。逻辑组合元件的输出只有两种状态,通常表示为“0”和“1”,分别代表低电平和高电平。基本的逻辑组合元件有与门、非门、或门、或非门等。
  2. IP核封装时会显示路径,需要记住,便于后续进行查找。路径如下图所示:

  3. 开发板的LED显示情况如下图所示:
  4. IP核(Intellectual Property core,知识产权核)是指在数字电路中常用的可重用的、预先设计好的、经过验证的电路模块,可以用于快速设计和实现数字电路系统。IP核通常由硬件描述语言(如Verilog、VHDL等)编写而成,可以直接在FPGA或ASIC芯片上实现。
  5. 在Verilog语言中,#100表示延迟100个时钟周期,即表示在当前模拟时钟周期后,延迟100个时钟周期,然后再执行下一条语句。通常用于在仿真过程中模拟延迟,以便更好地测试电路的行为。
  6. 在本实验中,创建IP核的方式如下:
    ——对仿真正确的模块进行综合
    ——弹出窗口后点击cancel
    ——点击Project Manager中的Project Settings
    ——对话框中选择IP,并进入Packager选项卡
    ——设置相关参数后点击Apply和OK
    ——在菜单栏的Tools中选择Create and Package IP
    ——在弹出窗口中设置封装选项,设置IP Location等
    ——依次在Package IP界面中进行封装设置,最后点击Review and Package中的Package IP按钮
    ——完成封装,点击路径查看

http://www.ppmy.cn/news/798189.html

相关文章

阿里云AliYun物联网平台使用-申请免费试用及完成初始配置

一、项目简介 本专栏文章将围绕阿里云物联网平台&#xff0c;实现其设备向云平台的数据上传&#xff0c;客户端获取云平台数据。设备通过NBIOT技术实现无线采集&#xff0c;定时上传。 二、阿里云平台申请 阿里云物联网平台试用申请地址 进入上述超链接网址&#xff1a; 由于是…

最直白详细:“1字节(byte)”等于多少“位(bit)”

1byte等于8bit。数据存储是以“字节”&#xff08;Byte&#xff09;为单位&#xff0c;数据传输大多是以“位”&#xff08;bit&#xff09;为单位&#xff0c;一个位就代表一个0或1&#xff08;即二进制&#xff09;&#xff0c;每8个位&#xff08;bit&#xff09;组成一个字…

1M = 1048576 字节 1G = 1073741824 字节 1T = 1099511627776 字节

1M 1048576 字节 1G 1073741824 字节 1T 1099511627776 字节

深度剖析线上应用节点流量隔离技术

作者&#xff1a;谢文欣&#xff08;风敬&#xff09; 为什么要做流量隔离 源于一个 EDAS 客户遇到的棘手情况&#xff1a;他们线上的一个 Pod CPU 指标异常&#xff0c;为了进一步诊断问题&#xff0c;客户希望在不重建此 Pod 的情况下保留现场&#xff0c;但诊断期间流量还…

还有这种操作??主播都在用的手机电脑随时切换玩绝地求生:刺激战场神器?

刺激战场不用安卓模拟器还能在电脑上玩&#xff1f;喜欢玩手游的都知道&#xff0c;想在电脑上玩手游一般就是用在电脑上下载安装一个模拟器&#xff0c;再在模拟器里面下载游戏。除了这种方式在之前几乎还没有他办法把手游弄到电脑上玩。但我最近发现一个神器&#xff0c;不仅…

游戏人生:iOS竟自带八倍镜功能:堪称吃鸡“外挂”

iOS竟自带八倍镜功能&#xff1a;堪称吃鸡“外挂” 转载来源: PConline 作者:杨蘑菇 现在最火的游戏是什么&#xff1f;没错&#xff0c;“吃鸡”。大吉大利今晚“吃鸡”。每次在朋友圈&#xff0c;总是看到别人“吃鸡”截图&#xff0c;心里就很不爽&#xff0c;为什么别人总…

分享几款方便又好用的电脑神器,快来看看

1、燃精灵 燃灵是一款微信空号检测软件&#xff0c;支持检测全球200多个国家和地区的手机号码是否开通了微信。 只需将号码段导入云端&#xff0c;即可检测微信已打开的部分&#xff0c;让您精准定位客户。 2、Lively Wallpaper Lively Wallpaper它是一款免费的动态桌面背景…

神器!

转载 小夕学算法 公众号的一篇文章 大家好&#xff0c;我是小夕&#xff0c;很多粉丝都有问过这个平时记录笔记使用什么工具&#xff0c;小夕平时用的是typora&#xff0c;功能很强大。这里有对应的typora使用教程&#xff0c;大家可以学习下。 阅读本文大概需要 8.5 分钟。 Ty…