利用Block Design在Vivado实现三位四选一多路选择器
一.要求:利用Block Design设计一个三位 4 选 1 多路选择器电路
二.实验原理:
真值表:
Block Design原理图
三.设计过程
Block Design 将自己编写的与门,非门和或门封装成三个独立的 IP 核,在另一个 Project 中导入后,进行连线设计,然后写出 design 代码。
1)编写与门,或门,非门
1.与门:输入的每一位都和 S0,S1 相与
module andGate #(parameter SIZE = 3)
(input s0, input s1, input[(SIZE-1):0] a, output[(SIZE-1):0] out); genvar i;generate for(i=0;i<SIZE;i=i+1) begin: gfor assign out[i] = a[i]&s0&s1; end endgenerate endmodule
2.或门:输出的每 i 位等于每一个输入数据第 i 位相或
module orGate #(parameter SIZE = 3)
(input [(SIZE-1):0] a, input[(SIZE-1):0] b, input[(SIZE-1):0] c, input [(SIZE-1):0] d, output [(SIZE-1):0] out); genvar i;
generate for(i=0; i<SIZE; i=i+1)
begin: gfor
assign out[i] = a[i]|b[i]|c[i]|d[i];
end
endgenerate
endmodule
3.非门:对输入进行取反操作
module notGate#(parameter SIZE = 3)
(input a, output out);
assign out = ~a;
endmodule
2) 进行 Block Design, 电路连线及代码编写
设计思路:根据 0 和任何数相与都得 0,而只有当三个数全为 1 相与时才 能为 1。要想输入 00 时输出为 001,则他需要将选择信号取反后再和 001 相与才能得到 001。同理要输入 01 得到 010,则选择信号低位取 反,高位不变后再与 010 相与则可输出 010。对 10 和 011,11 和 100 同 理,设计好四个与门后,将四个与门的输出连到或门,进行每一位相 或,则可以得到正确输出。
1.电路连线
2.代码编写
a_0 和 a_1 为两位选择信号,a_2,a_3,a_4,a_5 均为三位输入的数据, out_0 为三位选择的输出数据。 design_1 为上图所示的 block design 文件,用 a_0 到 a_5 实例化一个名 为 h1 的 design_1 的 block design。
module mux4to1_bd (a_0,a_1,a_2,a_3,a_4,a_5,out_0);
input a_0;
input a_1;
input[2:0] a_2;
input[2:0] a_3;
input[2:0] a_4;
input[2:0] a_5;
output [2:0] out_0;
design_1 hl(.a_0(a_0),.a_1(a_1),.a_2(a_2),.a_3(a_3),.a_4(a_4),.a_5(a_5),.out_0 (out_0));
endmodule
四.仿真
1.仿真文件
`timescale 1ns / 1ps module mux4to1_bd_try();
reg s0,s1;
reg [2:0] x1;
reg [2:0] x2;
reg [2:0] x3;
reg [2:0] x4;
wire [2:0] out;
mux4to1_bd try(s0,s1,x1,x2,x3,x4,out);
initial begins0 = 0; s1 = 0; x1 = 3'b001; x2 = 3'b010; x3 = 3'b011; x4 = 3'b100;#100 s0 = 0; s1 = 0; #100 s0 = 1; s1 = 0; #100 s0 = 0; s1 = 1;#100 s0 = 1; s1 = 1; #100 $stop; end endmodule
2.仿真结果
记得点赞收藏喏
利用Block Design在Vivado实现三位四选一多路选择器相关推荐
- Block Design内部BRAM控制器与外部BRAM的连接
在最近的一个设计中遇到了这样一个问题.我在Block Design中例化了XDMA,并通过interconnect连接了3个BRAM控制器,3个BRAM控制器的端口引出到Block Design外部. ...
- 三位数码管实验报告-数字系统实验
这里写自定义目录标题 数字系统实验-三位数码管实验报告## 1. 日志(2020.03.26日完成) 2. 报告 3.实验总结 数字系统实验-三位数码管实验报告## 1. 日志(2020.03.26日 ...
- VHDL三输入与门、四选一复用器
1.三输入与门 --定义头文件 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;--定义实体,定义输入和输出 ENTITY A3 ISPORT(a,b,c:IN S ...
- Vivado 多路选择器(含测试代码)
本篇文章使用Verilog语言编写实现五选一多路选择器,含有设计代码和测试代码. 一.接口描述 五选一多路选择器接口描述表: 二.设计代码 `timescale 1ns / 1ps module se ...
- SoC第一讲——Vivado的Block Design 的使用
SoC第一讲--Vivado的Block Design 的使用 前言 近期刚接触SoC的学习,通过Xilinx的Vivado软件和ZYNQ系列的器件芯片学习SOC,特此在学习的过程中做些总结,以帮助自 ...
- Vivado Block Design流程(MicroBlaze)
在达芬奇开发板上搭建基于 BRAM 的 MicroBlaze 嵌入式最小系统 硬件设计: 1.首先通过Vivado软件创建工程 使用parts选项选择开发板型号,完成工程创建. 2.通过IP INTE ...
- vivado修改block design后更新进sdk
修改完block design后重新generate output products后(顶层wrapper.v文件不用修改因为设置自动管理)导入SDK 导入硬件export hardware后弹出提示 ...
- vivado下block design重新整理布局regenerate layout
进行block design是连线看起来很乱,不用手动整理,在图纸上右击点击regenerate layout连线就会变得干净整洁
- 输入引脚时钟约束_Happy Design in Vivado 系列:时序分析入门三板斧(一):创建时钟...
本系列中我们将一起探寻 Xilinx FPGA 的硬件开发环境 Vivado,发现 Vivado 的 Design Flow,使用 Tips...或许再来一些 BUG?Happy Design in ...
最新文章
- Denoising DNA deep sequencing data—high-throughput sequencing errors and their correction
- android java 多线程,Android多线程的四种方式
- tf.keras.losses.BinaryCrossentropy 损失函数 示例
- mod php是什么意思,mod函数是什么意思
- 以色列农业奇迹-丰收节贸易会:谋定符合国情制度和方式
- android开发入门_Android开发入门
- linux 优化 sysctl.conf,Linux内核sysctl.conf的优化设置
- python小程序贪吃蛇_微信小程序实现的贪吃蛇游戏【附源码下载】
- c语言里面你不知道的break与switch,contiune的用法
- 设计模式,六大设计原则,类的特性
- 八、关于FFmpeg需要絮叨的一些事
- php listen命令,开启队列时,命令行输入php think queue:listen出现乱码
- 安装中文版MSDN方法
- C++程序设计语言(特别版)pdf
- 百度AI开放平台情感分类
- 一台电脑控制27台手机技术原理分析
- Matlab实现指纹去噪增强
- 窄带高清赋能体育赛事,世界杯高清直播背后的技术变革
- 7-4 病毒感染检测 (15 分)
- 2023国自然已审核,预祝8月上榜