Verilog 语言 001 --- 入门级 --- 编写一个半加器电路模块
Verilog 语言编写一个 半加器 电路模块
半加器 的电路结构:
S = A 异或 B
C = A 与 B
1. 程序代码
module h_adder (A, B, SO, CO);
input A, B;
output SO, CO;
assign SO = A ^ B;
assign CO = A & B;
endmodule
2. 解释程序代码
- 关键词
module
与endmodule
就像一个括号({}
),任何一个功能模块的描述都必须放在此 “括号” 里面。 h_adder
是模块的名字,名字自定义。h_adder
后面的括号和括号里的内容叫做:外部端口表。括号里面的内容:A, B, SO, CO
,就是这个模块中所有 外部端口 ,外部端口的名字自定义,类似 C语言 函数的形参。如果将这段程序比喻成一个电路的话,那么外部端口就是这个电路中引出的引脚。- 使用
input
和output
等关键字来定义 外部端口(A, B, SO, CO
)的属性。
input
和output
等关键字叫做:端口关键词。如果 外部端口 是输出引脚,就定义为:output
;如果 外部端口 是输入引脚,就定义为:input
;如果 外部端口 是输入输出引脚,就定义为:inout
。 - 以关键字
assign
引导的语句,是描述这个模块(当前例子的模块名为:h_adder
)的逻辑功能和电路结构。简单的说,实现功能的语句使用关键字assign
来修饰。
这样的一个模块程序,就相当于一个具有某种功能的电路模块硬件。比如:上面这段代码的功能就是 半加器 这个电路的功能。
3. 程序代码中需要注意的几点
- 模块的名字(
h_adder
),在命名的时候,需要注意:名称不能使用数字开头;不能出现中文;不能与EDA软件库中已定义好的关键词或元件名相同,比如:or2
、latch
等。 - 除了
endmodule
语句不需要,其他的每条语句都使用 分号(;
) 做为结束。 - 定义外部端口时,端口关键词(
input
、output
、inout
等)后面可以定义多个外部端口,端口名之间使用逗号(,
)相隔,最后加上 分号(;
)。
4. 程序模板
模块语句的一般格式如下:
module 模块名 外部端口表 ;
定义外部端口属性
模块的功能描述
endmodule
参考:
《EDA技术实用教程 — Verilog HDL版(第五版)》 3.1节 P59
Verilog 语言 001 --- 入门级 --- 编写一个半加器电路模块的更多相关文章
- 用Java语言编写一个简易画板
讲了三篇概博客的概念,今天,我们来一点实际的东西.我们来探讨一下如何用Java语言,编写一块简易的画图板. 一.需求分析 无论我们使用什么语言,去编写一个什么样的项目,我们的第一步,总是去分析这个项目 ...
- C语言的本质(28)——C语言与汇编之用汇编写一个Helloword
为了更加深入理解C语言的本质,我们需要学习一些汇编相关的知识.作为最基本的编程语言之一,汇编语言虽然应用的范围不算很广,但是非常重要.因为它能够完成许多其它语言所无法完成的功能.就拿 Linux 内核 ...
- 用C语言编写一个简单的词法分析程序
问题描述: 用C或C++语言编写一个简单的词法分析程序,扫描C语言小子集的源程序,根据给定的词法规则,识别单词,填写相应的表.如果产生词法错误,则显示错误信息.位置,并试图从错误中恢复.简单的恢复方法 ...
- 编写一个C语言函数,要求输入一个url,输出该url是首页、目录页或者其他url
编写一个C语言函数,要求输入一个url,输出该url是首页.目录页或者其他url 首页.目录页或者其他url 如下形式叫做首页: militia.info/ www.apcnc.com.cn/ htt ...
- 为Python编写一个简单的C语言扩展模块
最近在看pytorh方面的东西,不得不承认现在这个东西比较火,有些小好奇,下载了代码发现其中计算部分基本都是C++写的,这真是要我对这个所谓Python语音编写的框架或者说是库感觉到一丢丢的小失落,细 ...
- 用 C 语言编写一个简单的垃圾回收器
人们似乎觉得编写垃圾回收机制是非常难的,是一种仅仅有少数智者和Hans Boehm(et al)才干理解的高深魔法.我觉得编写垃圾回收最难的地方就是内存分配,这和阅读K&R所写的malloc例 ...
- linux c语言编写一个shell壳
目的:我们要用c语言编写一个shell可以运行在linux机器上的. 介绍:shell所在的层次 我们要做的是操作系统,用于用户与操作系统进行交互的myhsell 思路:用户输入 一行字符串,我们先 ...
- 使用Java语言编写一个五子棋UI界面并实现网络对战功能(非局域网)
使用Java语言编写一个五子棋UI界面并实现网络对战功能(非局域网) 一,前期准备 1,Java IDE(Eclipse)与JDK的安装与配置jdk-15.0.1-免配置路径版提取码:earu免安装版 ...
- 《用C++语言编写一个程序,求PI的值》
//编写一个C++程序求PI的值 /* PI=16arctan(1/5)-4arctan(1/239) 其中arctan用如下形式的极数计算: arctan=x-(x^3/3)+(x^5/7)-(x^ ...
随机推荐
- [转载] Java开发在线编辑Word同时实现全文检索
一.背景介绍 Word文档与日常办公密不可分,在实际应用中,当某一文档服务器中有很多Word文档,假如有成千上万个文档时,用户查找打开包含某些指定关键字的文档就变得很困难,一般情况下能想到的解决方案是 ...
- 练习json读取中文
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- .NET和Docker ,比翼双飞
DockerCon 2019本周将在旧金山举行 ,DockerCon 是从业者.贡献者.维护者.开发者和容器生态系统学习.网络和创新的一站式活动. .NET 团队博客发布了<一起使用.NET和D ...
- LeetCode OJ:Symmetric Tree(对称的树)
Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center). For e ...
- Hadoop单机模式和伪分布式搭建教程CentOS
1. 安装JAVA环境 2. Hadoop下载地址: http://archive.apache.org/dist/hadoop/core/ tar -zxvf hadoop-2.6.0.tar.gz ...
- 常用服务搭建(nfs/ftp/samba)
一. NFS1. NFS简介NFS全称是network file systemNFS允许一个系统在网络上与他人共享目录和文件.通过使用NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件. 假 ...
- LeetCode Minimum Index Sum of Two Lists
原题链接在这里:https://leetcode.com/problems/minimum-index-sum-of-two-lists/description/ 题目: Suppose Andy a ...
- 三、python沉淀之路--列表(list)
一.列表提供的一些方法 1.append():在原值最后追加 li = [11,22,33,44,55,] li.append(99) print(li) li.append('中国') print( ...
- java程序员图文并茂细说Unity中调用Android的接口
http://bbs.csdn.net/topics/391876421 最近做一个项目,为同事提供接口,能使他在Unity中调用Android中的函数来实现QQ登陆并获取用户信息.按照一些书上和一些 ...
- SpringCloud微服务实战——第二章Springboot
Spring Boot项目工程 src/main/java:主程序入口HelloApplication,可以通过直接运行该类来启动Spring Boot应用. src/main/resources:配 ...