【FPGA初级】4选一数据选择器的verilog实现(含testbench与波形)
分类
- 数据选择器
- verilog实现
- testbench
数据选择器
数据选择器,可根据给定的输入地址代码,从一组输入信号中选出指定的一个,送至输出端。
四选一数据选择器,从四个端口中任意选择一个,送至输出端。设定四个端口为din[0]、din[1]、din[2]、din[3],表示四个端口需要两个选择信号(22 =4),设为del[0]、del[1],将输出信号设为dout。
verilog实现
代码如下
module MUX(
din,
sel,
dout);input[3:0] din;//四个端口,故位宽为4
input[1:0] sel;//两个选择信号,故位宽为2
output dout;
reg dout;always @(*)beginif(sel==2'b00)dout=din[0];if(sel==2'b01)dout=din[1];if(sel==2'b10)dout=din[2];if(sel==2'b11)dout=din[3];endendmodule
testbench
代码如下
`timescale 1ns/1ns
module MUX_test; //MUX_test为测试文件名字reg [3:0]din; //输入信号对应reg类型
reg [1:0]sel;
wire dout; //输出信号对应wire类型MUX u_MUX( //MUX为被例化的模块名,u_MUX为例化模块名.din(din), //括号外为被例化的端口名,括号内为例化端口名.sel(sel),.dout(dout));//以下四个always颇为巧妙,具体看下方解释
always # 10 din[0]=~din[0];
always # 20 din[1]=~din[1];
always # 40 din[2]=~din[2];
always # 80 din[3]=~din[3];initialbeginsel=1'b0;din=4'b0;#160 $stop;end
always #10 sel=sel+1;//din的值10ns变换一次,故而将sel的每一个值延时10nsendmodule
四个always实现了din四个端口的值从0000变化到了1111,如下表所示
时间变化 | 信号变化 | din |
---|---|---|
0 | 无 | 0000 |
10ns | din[0]取反 | 0001 |
20ns | din[0]取反,din[1]取反 | 0010 |
30ns | din[0]取反 | 0011 |
40ns | din[0]取反,din[1]取反,din[2]取反 | 0100 |
50ns | din[0]取反 | 0101 |
60ns | din[0]取反,din[1]取反 | 0110 |
70ns | din[0]取反 | 0111 |
80ns | din[0]取反,din[1]取反,din[2]取反,din[3]取反 | 1000 |
90ns | din[0]取反 | 1001 |
100ns | din[0]取反,din[1]取反 | 1010 |
110ns | din[0]取反 | 1011 |
120ns | din[0]取反,din[1]取反,din[2]取反 | 1100 |
130ns | din[0]取反 | 1101 |
140ns | din[0]取反,din[1]取反 | 1110 |
150ns | din[0]取反 | 1111 |
使得din的值有多种取值并无多意,只想体现del的选择功能,无论din的值如何,由del的值决定输出哪个端口,也可以将din的值固定为一个值,也可以体现选择功能。
del的值与端口号的对应如下:
del | dout |
---|---|
00 | din[0] |
01 | din[1] |
10 | din[2] |
11 | din[3] |
假定某时din的值为1101,而此时del的值为10,故而din[2]为输出端口,输出的值与din的值无关,但波形图一致(输出与被选端口的波形)。
波形图如下:
对准一个时间段,可观察到被选定的端口号的波形,与输出波形一致。
以上均为学习笔记,若有错误,欢迎大家指出,一定积极讨论并予以改正
【FPGA初级】4选一数据选择器的verilog实现(含testbench与波形)相关推荐
- FPGA(3)验证数字逻辑(与门、与非门、二选一数据选择器、2-4译码器、半加器、全加器)
目录 一.验证与门 二.验证与非门 三.验证二选一数据选择器 四.验证2-4译码器 五.验证半加器 六.验证全加器 0.初始化定义 1.第一个半加器 2.第二个半加器 3.得到最终进位Co 代码 0决 ...
- FPGA(1)--VHDL--6选1数据选择器
文章目录 一.实验目的 二.实验内容 三.实验设计 四.实验结果及仿真 五.实验思考与总结 一.实验目的 掌握用VHDL语句进行组合电路设计的方法,并熟悉程序的编译.调试与波形图的仿真. 二.实验内容 ...
- VHDL四选一数据选择器和基本触发器的设计
主要内容: 本设计主要是利用超高速硬件描述语言VHDL对四选一数据选择器和基本触发器电路进行编程实现. 四选一数据选择器应该具备的功能:在选择信号的作用下,从输入通道中选择某一个通道的数据作为输出. ...
- Verilog二选一数据选择器
//二选一数据选择器module mux2_1(a0,a1,s,f) input a0,a1,s; output f;//默认是wire(线)变量 assign f=(s)?a1:a0;//assig ...
- Quartus II使用说明(Verilog HDL二选一数据选择器 )
<可编程数字逻辑电路设计>课程中Quartus II软件的使用说明 VHDL和Verilog HDL不一样. 1.新建文件夹,里面包含5个子文件夹(doc/img/prj/rtl/test ...
- 4片74151扩展为32选1数据选择器
在做较为复杂的电路设计时, 比如设计过程包含对于5变量逻辑函数的实现, 此时若用大量的逻辑门来实现, 那无疑是耗时耗力的: 若直接用32选1数据选择器进行实现, 则只需对照真值表来接线即可, 这样免去 ...
- Verilog——74HC151八选一数据选择器并扩展为16选1数据选择器
Verilog--74HC151八选一数据选择器并扩展为16选1数据选择器 74HC151的仿真 设计思路 采用行为级建模,根据74HC151八选一数据选择器的功能表编程即可. 代码实现 设计模块 / ...
- Verilog VHDL三种建模描述方式——2选1数据选择器
标题Quartus II 标题 Verilog VHDL三种建模描述方式--2选1数据选择器 1,结构化描述方式: 是使用实例化低层次模块的方法,即调用其他已经定义过的低层次模块对整个电路的功能进行描 ...
- # Quartusll采用IF设计二选一数据选择器及仿真
Quartusll采用IF设计二选一数据选择器及仿真 软件Quartusll9.1 没有软件的小可爱先来领取资源哈~~(9版本以后就不自带仿真) 链接:https://pan.baidu.com/s/ ...
- VHDL实验一:2选1数据选择器(绘制原理图)
一.实验要求 2选1数据选择器 输入信号:两个数据源a和b,选择端s.输出信号:选择输出端y.利用选择端s对输出端进行控制.达到2选1数据选择器的效果. 二.实验内容 1.二选一数据选择器的原理图: ...
最新文章
- eureka需要替换吗_iOS第三方库Eureka实现定制动画详解(二):万变不离其宗-Row组件...
- 舵机的脉冲指令的频率对于舵机运动影响
- Spring 与 Spring Boot 中的事件机制
- k8s实践7:ipvs结合iptables使用过程分析
- 从mysql读取数据保存成excel_小程序读取excel表格数据,并存储到云数据库
- 朴素容斥原理[ZJOI2016][bzoj4455]小星星
- Python与机器视觉(三)图像保存
- 性能测试之JMeter函数助手详解
- 组织架构适配下的敏捷开发
- 好用的Java开发IDEA插件汇总推荐
- CPU cache侧信道攻击
- 井字棋游戏 Matlab
- 驾考 曲线行驶 s弯
- C++20新特性个人总结
- linux 批量删除任务,Linux-Shell脚本学习心得之批量创建、删除用户
- 熊猫人表情包python 代码,Python熊猫替换特殊字符
- OPENGL简介---反走样
- TOPSIS--优劣解距离法
- golang与手机如何实现一些自动化操作?
- Python可以做哪些神奇好玩的事情?
热门文章
- PR菜鸟入门 -- PR下载安装
- 亲测有效 抖音视频如何批量去水印下载原视频2020-09-16
- 关于 TCP协议和HTTP关系 | TCP的三次握手和四次挥手
- Android破解学习之路(十五)—— 【Unity3D】洛菲斯的呼唤(Lophis roguelike)无限金币(道具)的实现 破解
- TCTrack: Temporal Contexts for Aerial Tracking
- python学习笔记(1) - python操作mysql数据库【持续更新中...】
- php swool 聊天室,swoole简单的聊天室demo(修正版)
- GD32实战14__RTC
- STM32 硬件I2C读写AT24C02/08
- windows下无npcap驱动导致golang获取网卡失败问题