Verilog三线 - 八线译码器
参阅了一些书籍和网上的写法,在此Mark。
布尔表达式法
module decode3_8_assign (data_in,data_out,enable);//算法实现
input [:] data_in;
input enable;
output [:] data_out;
reg data_a = 'b00000001;
assign data_out = (enable)?(~(data_a << data_in)):'b11111111;
endmodule

testbench:
`timescale ns/ ps
module decode3_8_assign_vlg_tst();
reg [:] data_in;
reg enable;
wire [:] data_out;
decode3_8_assign i1 (
.data_in(data_in),
.data_out(data_out),
.enable(enable)
);
initial
begin
enable = ;
data_in = ;
# enable = ;
# data_in = ;
# data_in = ;
# data_in = ;
# data_in = ;
# data_in = ;
# data_in = ;
# data_in = ;
# data_in = ;
end
endmodule

case语句法
module decode3_8_case (data_in,data_out,enable);
input [:] data_in;
input enable;
output [:] data_out;
reg [:] data_out;
always @ (data_in or enable)
begin
if (enable)
case (data_in)
'b000 : data_out = 8'b11111110;
'b001 : data_out = 8'b11111101;
'b010 : data_out = 8'b11111011;
'b011 : data_out = 8'b11110111;
'b100 : data_out = 8'b11101111;
'b101 : data_out = 8'b11011111;
'b110 : data_out = 8'b10111111;
'b111 : data_out = 8'b01111111;
default : data_out = 'bxxxxxxxx;
endcase
else data_out = 'b11111111;
end
endmodule

testbench:
`timescale ps/ ps
module decode3_8_case_vlg_tst();
reg [:] data_in;
reg enable;
wire [:] data_out;
decode3_8_case i1 (
.data_in(data_in),
.data_out(data_out),
.enable(enable)
);
initial
begin
data_in = ;
enable = ;
# enable = ;
while (data_in <= 'b111)//for (i = 0;i <= 3'b111;i = i + )
begin
# data_in = data_in + ;
end
# $stop;
end
endmodule

for语句法
module decode3_8_for (data_out,data_in,enable);
input [:] data_in;
input enable;
output [:] data_out;
reg [:] data_out;
integer i;
always @ (data_in or enable)
begin
if (enable)
begin
for (i = ;i < ;i = i + )
begin
if (data_in == i)
data_out[i] = ;
else
data_out[i] = ;
end
end
else
data_out = 'hff;
end
endmodule

testbench:
`timescale ps/ ps
module decode3_8_for_vlg_tst();
reg [:] data_in;
reg enable;
wire [:] data_out;
decode3_8_for i1 (
.data_in(data_in),
.data_out(data_out),
.enable(enable)
);
initial
begin
data_in = ;
enable = ;
# enable = ;
while (data_in <= 'b111)//for (i = 0;i <= 3'b111;i = i + )
begin
# data_in = data_in + ;
end
# $stop;
end
endmodule

if语句法
`timescale ps/ ps
module decode3_8_for_vlg_tst();
reg [:] data_in;
reg enable;
wire [:] data_out;
decode3_8_for i1 (
.data_in(data_in),
.data_out(data_out),
.enable(enable)
);
initial
begin
data_in = ;
enable = ;
# enable = ;
while (data_in <= 'b111)//for (i = 0;i <= 3'b111;i = i + )
begin
# data_in = data_in + ;
end
# $stop;
end
endmodule

testbench:
`timescale ns/ ps
module decode3_8_if_vlg_tst();
reg [:] data_in;
reg enable;
wire [:] data_out;
integer i;
decode3_8_if i1 (
.data_in(data_in),
.data_out(data_out),
.enable(enable)
);
initial
begin
data_in = ;
enable = ;
# enable = ;
for (i = ;i < ;i = i + )
begin
# data_in = data_in + ;
end
end
endmodule

如有错误还请指出,如有侵权还请告知,如需转载请注明出处!
本人博客:http://www.cnblogs.com/yllinux/
Verilog三线 - 八线译码器的更多相关文章
- Verilog八线 - 三线优先编码器设计(74LS148)
百度百科_74LS148 if语句法 //8线-3线优先编码器设计(74LS148) // //EI | A7 A6 A5 A4 A3 A2 A1 A0 | Y2 Y1 Y0 GS EO //0 | ...
- 8-3编码器,3-8译码器的verilog实现
在数字系统中,由于采用二进制运算处理数据,因此通常将信息变成若干位二进制代码.在逻辑电路中,信号都是以高,低电平的形式输出.编码器:实现编码的数字电路,把输入的每个高低电平信号编成一组对应的二进制代码 ...
- Verilog学习笔记简单功能实现(四)...............译码器和编码器
这里以简单的3-8译码器和8-3编码器为例: module decoder3_8(a,out); :]a; :]out; 'b1<<a;/*把最低位的1左移in位(根据in口输入的值)并赋 ...
- 用Verilog语言设计一个3-8译码器
case语句 if_case语句 源码下载 Github >>
- FPGA作为从机与STM32进行SPI协议通信---Verilog实现 [转]
一.SPI协议简要介绍 SPI,是英语Serial Peripheral Interface的缩写,顾名思义就是串行外围设备接口.SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用 ...
- 03-组合逻辑电路设计之译码器——小梅哥FPGA设计思想与验证方法视频教程配套文档
芯航线——普利斯队长精心奉献 课程目标: 1. 再次熟悉Quartus II工程的建立以及完整的FPGA开发流程 2. 以译码器为例学会简单组合逻辑电路设计 实验平台:无 实验原理: 组合逻辑, ...
- 对Verilog 初学者比较有用的整理(转自它处)
*作者: Ian11122840 时间: 2010-9-27 09:04 ...
- 写自己的第二级处理器(3)——Verilog HDL行为语句
我们会继续上传新书<自己动手写处理器>(未公布),今天是第七章,我每星期试试4 2.6 Verilog HDL行为语句 2.6.1 过程语句 Verilog定义的模块一般包含有过程语句,过 ...
- 基于basys2用verilog设计多功能数字钟(重写)
话不多说先上图 前言 自从学习FPGA以来,唯一做过的完整系统就是基于basys2得多功能数字表.记得当时做的时候也没少头疼,最后用时间磨出来了一个不是很完整的小系统,当时还是产生了满 ...
随机推荐
- git学习--clone和pull
clone:从远程服务器克隆一个一模一样的版本库到本地,复制的是整个版本库.(clone是将一个库复制到你的本地,是一个本地从无到有的过程) pull:从远程服务器获取到一个branch分支的更新到本 ...
- 关于 java中的SecureRandom在linux中每次生成不同结果
使用AES算法的时候,会发现下面的代码在windows每次产生确定的结果,但Linux就不同,导致无法正确解密 public static String encrypt(String content, ...
- connecting-to-github-with-ssh
https://help.github.com/articles/connecting-to-github-with-ssh/ 创建ssh密钥后,从github clone仓库到本地出现permiss ...
- 统计Metric
package com.example.mail; import org.apache.storm.Config; import org.apache.storm.LocalCluster; impo ...
- 傻瓜式Spring教学第二课
什么是依赖注入 先说什么是依赖 如下: class A{ B b; } class B{ } 则称A依赖B. 依赖:A的某些业务逻辑需要B的参与,如果不对A中的参数b进行实例化,那么A中的某些业务逻辑 ...
- 2.centos7 安装Mesos和marathon
master节点 节点名称 IP地址 master1 192.168.161.128 由于硬件资源有限,这里仅安装一个master节点,会存在单点问题.在实际生产中,尽量不要这样操作. 1.安装zoo ...
- php数组·的方法1-数组统计函数
/** * 下面是数组统计函数 * * * **/ //count() 数组的长度 print_r(count($arr3)); echo '<hr>'; //max() min() 数组 ...
- Linux 添加用户(user),组(Group)以及权限(Permission)
1. 添加用户 sudo adduser UserName 异常: sudo adduser --force-badname <username> 之后为这个用户添加其他辅助信息 切换用户 ...
- win10电脑的USB接口插上U盘以后不能使用?
今天刚遇到的问题 解决方法如下: 右击“我的电脑”选“属性”,打开“设备管理器”,双击“通用串行总线控制器”,双击任意一个,打开属性对话框,切换到“电源管理”选项卡,去除“允许计算机关闭这个设备以节约 ...
- STL中的算法
STL中的所有算法(70个) 参考自:http://www.cppblog.com/mzty/archive/2007/03/14/19819.htmlhttp://hi.baidu.com/ding ...