当前位置: 首页 > news >正文

实验一:数据选择器实验

实验一 数据选择器实验报告

目录

  1. 实验目的
  2. 实验内容
    • 原理描述
    • Verilog HDL设计源代码
    • Testbench仿真代码及仿真结果
    • XDC文件配置
    • 下板测试
  3. 实验体会
  4. 实验照片

实验目的

  1. 熟悉使用Verilog HDL的三种不同描述方式进行基本逻辑电路建模,实现数据扩展。
  2. 学习使用Vivado进行逻辑设计的基本流程。
  3. 学习使用Nexys4 FPGA硬件开发板,了解开发板主要的外围接口。
  4. 了解设计源代码与仿真代码的区别。

实验内容

原理描述

八选一选择器有8个输入端口,通过3位二进制的选择信号(sel[2:0])选择其中一个输入作为输出。可以用Verilog的case语句(推荐)或if语句实现,case语句语法更简洁、整齐。

Verilog HDL设计源代码

在这里插入图片描述

// 8选1数据选择器
module mux8to1(input  [7:0] din,     // 8位输入数据input  [2:0] sel,     // 3位选择信号output       dout     // 输出数据
);
// 使用case语句描述
reg dout_r;
assign dout = dout_r;always @(*) begincase(sel)3'b000: dout_r = din[0];3'b001: dout_r = din[1];3'b010: dout_r = din[2];3'b011: dout_r = din[3];3'b100: dout_r = din[4];3'b101: dout_r = din[5];3'b110: dout_r = din[6];3'b111: dout_r = din[7];default: dout_r = 1'b0;endcase
endendmodule

Testbench仿真代码及仿真结果

在这里插入图片描述

module testbench();reg [7:0] din;reg [2:0] sel;wire dout;mux8to1 uut(.din(din),.sel(sel),.dout(dout));initial begin// 依次测试每一路高电平输出din = 8'b00000001; sel = 3'b000; #10;$display("din=%b, sel=%b, dout=%b", din, sel, dout);din = 8'b00000010; sel = 3'b001; #10;$display("din=%b, sel=%b, dout=%b", din, sel, dout);din = 8'b00000100; sel = 3'b010; #10;$display("din=%b, sel=%b, dout=%b", din, sel, dout);din = 8'b00001000; sel = 3'b011; #10;$display("din=%b, sel=%b, dout=%b", din, sel, dout);din = 8'b00010000; sel = 3'b100; #10;$display("din=%b, sel=%b, dout=%b", din, sel, dout);din = 8'b00100000; sel = 3'b101; #10;$display("din=%b, sel=%b, dout=%b", din, sel, dout);din = 8'b01000000; sel = 3'b110; #10;$display("din=%b, sel=%b, dout=%b", din, sel, dout);din = 8'b10000000; sel = 3'b111; #10;$display("din=%b, sel=%b, dout=%b", din, sel, dout);$stop;end
endmodule

仿真结果:每组 din 中只有一位为高,sel 对应该位,dout 均为 1(高电平),其余情况为 0(低电平)。


XDC文件配置

# 信号与开发板引脚映射示例(请根据实际开发板调整)
set_property PACKAGE_PIN A1 [get_ports {din[0]}]
set_property PACKAGE_PIN B1 [get_ports {din[1]}]
set_property PACKAGE_PIN C1 [get_ports {din[2]}]
set_property PACKAGE_PIN D1 [get_ports {din[3]}]
set_property PACKAGE_PIN E1 [get_ports {din[4]}]
set_property PACKAGE_PIN F1 [get_ports {din[5]}]
set_property PACKAGE_PIN G1 [get_ports {din[6]}]
set_property PACKAGE_PIN H1 [get_ports {din[7]}]
set_property PACKAGE_PIN J1 [get_ports {sel[0]}]
set_property PACKAGE_PIN K1 [get_ports {sel[1]}]
set_property PACKAGE_PIN L1 [get_ports {sel[2]}]
set_property PACKAGE_PIN M1 [get_ports dout]
set_property IOSTANDARD LVCMOS33 [get_ports {din[*]}]
set_property IOSTANDARD LVCMOS33 [get_ports {sel[*]}]
set_property IOSTANDARD LVCMOS33 [get_ports dout]

注意:实际引脚编号请参照Nexys4开发板用户手册设置,与实际硬件接口一一对应。


在这里插入图片描述
在这里插入图片描述
注:需要对应开发板上的接口

下板测试

  • 测试方法:分别将din的8位输入设置为00000001~10000000,各自对应sel从000到111,观察dout端口电平状态。

  • 预期结果:每种情况下,sel选择的那一位din为高,dout输出为高电平,其余为低。

  • 测试举例:

    • din = 00000001, sel = 000, dout = 高
    • din = 00000010, sel = 001, dout = 高
    • din = 00000100, sel = 010, dout = 高
    • din = 00001000, sel = 011, dout = 高
    • din = 00010000, sel = 100, dout = 高
    • din = 00100000, sel = 101, dout = 高
    • din = 01000000, sel = 110, dout = 高
    • din = 10000000, sel = 111, dout = 高

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

实验体会

  1. 第一次使用FPGA开发实验,虽然结果很简单,但过程很艰难。需要把理论学习到的原理真正用到开发中,有时确实是反应不过来,不过熟能生巧,下次一定会更好。
  2. 需要多使用Verilog语言,熟悉其语法,和C语言类似。
  3. 真正学会了使用Vivado进行FPGA开发实验的流程,跟着老师一步一步来,多想多记忆,同时也需要自己课后多学习。
  4. 实验的第一步一定是搞清楚原理再写代码。心里要有一个框架,做实验的时候才能得心应手。

http://www.xdnf.cn/news/936901.html

相关文章:

  • Go语言中的if else控制语句
  • DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”
  • masm32汇编实现扫雷进程注入
  • 第1课、LangChain 介绍
  • 算法-数论
  • Java线程池核心原理与最佳实践
  • 永磁同步电机参数辨识算法--IPMSM拓展卡尔曼滤波全参数辨识
  • 73常用控件_QFormLayout的使用
  • 一个自动反汇编脚本
  • 深度学习入门Day3--鱼书学习(2)
  • 前端十种排序算法解析
  • 电压型PHY芯片MDI接口设计
  • 计算机网络笔记(二十九)——5.1运输层协议概述
  • QT线程同步 QReadWriteLock并发访问
  • xtp+ctp 交易系统接口简介
  • DAX权威指南9:DAX 查询分析与优化1
  • leetcode 386. 字典序排数 中等
  • Python爬虫实战:研究demiurge框架相关技术
  • 从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(十)
  • pgsql batch insert optimization (reWriteBatchedInserts )
  • Digital IC Design Flow
  • vue3:十六、个人中心-修改密码
  • bugku 网络安全事件应急响应
  • 02.管理数据库
  • CCPC guangdongjiangsu 2025 F
  • 【创新算法】改进深度优先搜索算法配合二进制粒子群的配电网故障恢复重构研究
  • 食养有方:进行性核上性麻痹患者的健康饮食指南
  • 解决SQL Server SQL语句性能问题(9)——SQL语句改写(2)
  • Linux系统防火墙之iptables
  • 工作记录 2017-08-01