3_8译码器Verilog HDL语言的简单实现

最近在学Verilog HDL语言,觉得learn in doing是比较好的学习方式,所以我们来直接分析分析代码好了。

先来一波代码:

 1 module q_decode_38(data_in,data_out);
 2
 3         input[2:0] data_in;           //端口声明
 4         output[7:0] data_out;
 5         reg[7:0] data_out;
 6
 7 always@(data_in)
 8    begin
 9         case(data_in)
10                  3‘d0:data_out = 8‘b0000_0001;
11                  3‘d1:data_out = 8‘b0000_0010;
12                  3‘d2:data_out = 8‘b0000_0100;
13                  3‘d3:data_out = 8‘b0000_1000;
14                  3‘d4:data_out = 8‘b0001_0000;
15                  3‘d5:data_out = 8‘b0010_0000;
16                  3‘d6:data_out = 8‘b0100_0000;
17                  3‘d7:data_out = 8‘b1000_0000;
18          endcase
19      end
20
21 endmodule

代码分析如下:

知识点:

(1)基本语句

1)条件语句---case语句

case语句很明显了,格式跟c语言中的类似,不解释。值得注意的是上述代码中是不是少了defaule这种情况呢?此处省略是因为已列出所有的情况 ,不过一般不提倡省略,因为若出现了未知情况,则很容易生成不必要的锁存器。

2)顺序块语句---begin...end语句

begin...end语句没什么特殊要求,就是在顺序块begin...end之间的语句是从上至下、从左往右逐句执行的。

3)过程语句---always语句

always语句的格式是[email protected]() 后加begin...end语句,括号中为触发条件,上述代码中表示,只要data_in的值发生变化,就执行always后的begin...end部分,否则不执行。

(2)基本功能实现

这是一个比较简单的3-8译码器电路程序,具体功能就不说了,不过这倒是可以下载到FPGA板子里进行观察,比如,可以通过三个拨码开关控制8个led灯来观察拨码开关与led灯之间的状态联系。

时间: 2024-12-23 20:25:38

3_8译码器Verilog HDL语言的简单实现的相关文章

【黑金教程笔记之003】【建模篇】akuei2的Verilog hdl心路

Verilog hdl不是“编程”是“建模” Verilog hdl语言是一种富有“形状”的语言. 如果着手以“建模”去理解Verilog hdl语言,以“形状”去完成Verilog hdl语言的设计.在感觉上Verilog hdl + FPGA是“可所触及”,是一种“实实在在”的感觉,不相等于“编程”时的那种“抽象感”. “低级建模”最基本最简单之意,建模习惯or风格.

Verilog HDL笔记

模块 模块介绍 模块是Verilog HDL语言的基本单元,数字系统是用模块的形式来描述. 模块是描述某个设计的功能.结构和其他模块通信的外部端口. Verilog HDL中的各个模块是并行运行的 模块可以调用其他模块的实例 模块结构 module <模块名>(<端口列表>) 端口说明(input,output,inout) 参数定义(可选) 数据类型定义//wire.reg.task.function 连续赋值语句(assign)//组合逻辑 过程块(always和initial

Verilog HDL那些事儿

第一章:我眼中的 FPGA 和 Verilog HDL 1."在笔者的心里,FPGA 宛如 “一堆乐高积木”和 Verilog HDL 是自己的手(工具) ,自己可以随心所愿的要怎么拆就怎么拆." 第二章:低级建模 - 基础知识 1.Verilog HDL 不是“编程”是“建模”.“建模”这一词是指,使用“硬件描述语言”去建立某个资源模块.如果说 c 语言可以使用“编程”一词,那么 Verilog HDL 语言使用“建模”这一词更适合不过了.Verilog HDL 语言是一种富有 “形

自己动手写处理器之第二阶段(2)——Verilog HDL简介

将陆续上传本人写的新书<自己动手写处理器>(尚未出版),今天是第六篇,我尽量每周四篇 2.3 Verilog HDL简介 本书实现的OpenMIPS处理器是使用Verilog HDL编写的,所以本章接下来的几节将介绍Verilog HDL的一些基本知识,包括语法.结构等.因为本书并不是一本讲授Verilog HDL的专门书籍,所以此处介绍的内容并不是Verilog HDL的全部,只是一些基础知识,以及在OpenMIPS处理器实现过程中会使用到的知识.读者如果对Verilog HDL有进一步了解

MiS603 开发板2.2 Verilog HDL硬件语言基础

作者:MiS603开发团队 日期:20150911 公司:南京米联电子科技有限公司 论坛:www.osrc.cn 网址:www.milinker.com 网店:http://osrc.taobao.com EAT博客:http://blog.chinaaet.com/whilebreak 博客园:http://www.cnblogs.com/milinker/ 2.2 Verilog HDL硬件语言基础 2.2.1 技术背景 大规模集成电路设计制造技术和数字信号处理技术,近三十年来,各自得到了迅

自己动手写处理器之第二阶段(3)——Verilog HDL行为语句

将陆续上传本人写的新书<自己动手写处理器>(尚未出版),今天是第七篇,我尽量每周四篇 2.6 Verilog HDL行为语句 2.6.1 过程语句 Verilog定义的模块一般包括有过程语句,过程语句有两种:initial.always.其中initial常用于仿真中的初始化,其中的语句只执行一次,而always中语句则是不断重复执行的.此外,always过程语句是可综合的,initial过程语句是不可综合的.       1.always过程语句 always过程语句的格式如图2-10所示.

Verilog HDL基础语法讲解之模块代码基本结构

Verilog HDL基础语法讲解之模块代码基本结构 ? 本章主要讲解Verilog基础语法的内容,文章以一个最简单的例子"二选一多路器"来引入一个最简单的Verilog设计文件的基本结构. 以下为本章中例子中的代码: 01????/*======================================= 02????*????file neme : mux2.v 03????*????author????:????小梅哥 04????*????Verison????:????

verilog HDL学习笔记(基本概念)

1. 作为一种硬件描述语言,verilog可以直接描述硬件结构,也可以通过描述系统行为实现建模,其主要特点和功能有: *描述基本逻辑门和基本开关模型. * 允许用户定义基元. * 可以指定设计中的端口到端口的延时,路径时延和设计中的时序检查. *可以采用多种方式进行建模,这些方式包括(1)顺序行为描述建模——使用过程化结构建模,(2)数据流行为方式——使用连续赋值语句方式建模,(3)结构化方式——使用门和模块实例语句描述建模. * Verilog中有两类数据类型,线网数据类型和寄存器数据类型.线

Verilog HDL设计进阶:有限状态机的设计原理及其代码风格_zt

http://www.21ic.com/app/eda/201308/189781_1.htm 由于Verilog HDL和 VHDL 行为描述用于综合的历史还只有短短的几年,可综合风格的Verilog HDL 和VHDL的语法只是它们各自语言的一个子集.又由于HDL的可综合性研究近年来非常活跃,可综合子集的国际标准目前尚未最后形成,因此各厂商的综合器所支持的HDL子集也略有所不同. 本书中有关可综合风格的Verilog HDL的内容,我们只着重介绍RTL级.算法级和门级逻辑结构的描述,而系统级