普通8线-3线编码器的Verilog描述及仿真
一个8线-3线编码器将8个输入线编码为3位二进制输出。当输入中的某一位为1时,输出对应的二进制编码。通常,输入中只有一个位为1,其余为0。
1、普通编码器的Verilog描述(8线-3线编码器)
1 module encode83(
2 input [7:0] in, // 8位输入
3 output reg [2:0] out // 3位输出
4 );
5
6 always @(*) begin
7 case (in)
8 8'b00000001: out = 3'b000; // 输入第0位为1
9 8'b00000010: out = 3'b001; // 输入第1位为1
10 8'b00000100: out = 3'b010; // 输入第2位为1
11 8'b00001000: out = 3'b011; // 输入第3位为1
12 8'b00010000: out = 3'b100; // 输入第4位为1
13 8'b00100000: out = 3'b101; // 输入第5位为1
14 8'b01000000: out = 3'b110; // 输入第6位为1
15 8'b10000000: out = 3'b111; // 输入第7位为1
16 default: out = 3'bxxx; // 默认情况,输出未定义
17 endcase
18 end
19
20 endmodule
2、普通8线-3线编码器的Testbench仿真测试
1 `timescale 1ns/1ns
2
3 module encode83_tb();
4
5 reg [7:0] in; // 8位输入
6 wire [2:0] out; // 3位输出
7
8 // 实例化编码器模块
9 encode83 uut (
10 .in(in),
11 .out(out)
12 );
13
14 initial begin
15 // 测试所有可能的输入
16 in = 8'b00000001; #10; // 输出应为 3'b000
17 in = 8'b00000010; #10; // 输出应为 3'b001
18 in = 8'b00000100; #10; // 输出应为 3'b010
19 in = 8'b00001000; #10; // 输出应为 3'b011
20 in = 8'b00010000; #10; // 输出应为 3'b100
21 in = 8'b00100000; #10; // 输出应为 3'b101
22 in = 8'b01000000; #10; // 输出应为 3'b110
23 in = 8'b10000000; #10; // 输出应为 3'b111
24
25 // 测试无效输入(多个位为1)
26 in = 8'b00000011; #10; // 输出应为 3'bxxx
27 in = 8'b00001100; #10; // 输出应为 3'bxxx
28 in = 8'b00011000; #10; // 输出应为 3'bxxx
29
30 $stop; // 停止仿真
31 end
32
33 endmodule

仿真结果如上图所示,初始化激励信号x为0000_0001,每延迟10ns,激励信号左移一位,重复7次,每次输入仅有1位有效输入,输出有效编码依次是000,001,010,011,100,101,110,111。第80ns时,x 输入中有多个位为1,输出将是未定义的状态。
普通8线-3线编码器的Verilog描述及仿真的更多相关文章
- PCB Genesis加邮票孔(线与线)实现算法
一.Genesis加邮票孔(线与线)实现算法 1.鼠标点击位置P点, 2.通过P点求出,垂足2个点:P1C与P2C (两个点即距离2条线段垂直的垂足点) 3.计算P1C到P2C方位角(假设置为变量PA ...
- VCS使用学习笔记(1)——Verilog相关的仿真知识
本文主要学习Verilog的仿真特性,以及仿真器对Verilog的处理,算是对Verilog知识的增量学习.本文内容与我的另一篇博文(http://www.cnblogs.com/IClearner/ ...
- 使用Verilog描述RTL图
题目要求 分别用两种方式表达此电路: 1)在一个模块中用两个过程来表达: 2)用顶层文件和例化语句的形式来表达. 给出下面RTL图的verilog描述. 1)纯过程语句描述 2)纯连续赋值语句描述 参 ...
- ArcGIS API for Silverlight 使用GeometryService求解线与线的交点
///画线 void btn_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { Button btn = sender as B ...
- 平面内,线与线 两条线找交点 两条线段的位置关系(相交)判定与交点求解 C#
个人亲自编写.测试,可以正常使用 道理看原文,这里不多说 网上找到的几篇基本都不能用的 C#代码 bool Equal(float f1, float f2) { return (Math ...
- FPGA编程—组合逻辑编码器等verilog实现
本篇博客主要实现对组合逻辑电路的一些常用模块的实现.组合逻辑中,包括译码器,编码器,输入输出选择器,数值比较器,算法单元等. 先来实现编码器,最常用的8-3编码器,这里先讲一下要用到的case ,c ...
- CSS标题线(删除线贯穿线效果)实现之一二
缘起 其实看到这个问题,心里已经默默把代码已经码好了~,不就想下面这样嘛:JSBIN代码示例 嗯,是的,我们日常确实基本上就是用的这种方式,也没啥问题呀~,来个背景色定下位就欧拉欧拉的了. 不过,因为 ...
- IT关键词,发现与更新,点成线,线成面,面成体
时序图 1.什么是时序图 2.如何看懂时序图 3.时序图的作用 4.如何绘制时序图 分布式 一个业务分拆多个子业务,部署在不同的服务器上. 分布式是指将不同的业务分布在不同的地方. 而集群指的是将几台 ...
- nyoj228 士兵杀敌(5)插线问线
士兵杀敌(五) 时间限制:2000 ms | 内存限制:65535 KB 难度:5 描述 南将军麾下有百万精兵,现已知共有M个士兵,编号为0~M,每次有任务的时候,总会有一批编号连在一起人请战 ...
- poj 3468 A Simple Problem with Integers(线段树 插线问线)
#include<iostream> #include<stdio.h> #include<string.h> #define NN 2500000 using n ...
随机推荐
- 1-python中的两大法宝和加载数据
python中的两大法宝和加载数据 1. Python两大法宝 ① Python3.6.3相当于一个package,package里面有不同的区域,不同的区域有不同的工具. ② Python语法有两大 ...
- 故障处理:ORA-04031真实案例分享
我们的文章会在微信公众号IT民工的龙马人生和博客网站( www.htz.pw )同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢! 由于博客中有大量代码,通过页面浏览效 ...
- Python全栈应用开发利器Dash 3.x新版本介绍(3)
更多Dash应用开发干货知识.案例,欢迎关注"玩转Dash"微信公众号 大家好我是费老师,在前两期文章中,我们针对Python生态中强大且灵活的全栈应用开发框架Dash,介绍了其3 ...
- 645仪表以JSON格式上发方法
1.概述 之前我们已经介绍了Modbus RTU仪表实现JSON格式上发云服务器的方法,类似的现在也可以支持645协议的仪表通过JSON格式上发服务器. 卓岚实现645仪表转JSON网关的特点有: 1 ...
- java--Hibernate关联映射
hibernate 程序执行流程 集合映射 User.java public class User { private int userId; private String userName; // ...
- centos设置swap
熟话说 内存不够,交换来凑,swap 就是用来提前在硬盘中划分一部分空间作为内存使用, 无奈论在linux或windows都有这个概念. 在安卓手机中还给起了一系列的名字 比如 内存融合.扩展内存什么 ...
- python 将数组写入文件
简介 常用功能 code import numpy as np import time test_data = np.random.rand(6000000,12) T1 = time.time() ...
- CF Round946 (Div. 3)B:如何写映射
Symmetric Encoding 题目描述 Polycarp has a string $ s $ , which consists of lowercase Latin letters. He ...
- python 自动化创建 confluence 页面三
create_wiki_page.py from configparser import ConfigParser import subprocess from pathlib import Path ...
- AmazeUI Sublime
http://amazeui.shopxo.net/getting-started/ 打开sublime text 并选择Preferences -->Browse Packages打开 选择下 ...