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^ ...
随机推荐
- 02-THREE.JS 辅助线使用
<!DOCTYPE html> <html> <head> <title></title> <script src="htt ...
- kylin_异常_01_java.io.FileNotFoundException: /developer/apache-kylin-2.3.0-bin/tomcat/conf/.keystore
一.异常现象 kylin安装完,启动后,控制正常,kylin后台也能正常访问.但是去看kylin的日志,却发现报错了: SEVERE: Failed to load keystore type JKS ...
- LeetCode OJ:Binary Tree Level Order Traversal II(二叉树的层序遍历)
Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from left ...
- [基本操作]决策单调性优化dp
一般的式子都是 $f_i = max\{g_j + w_{(i,j)}\}$ 然后这个 $w$ 满足决策单调性,也就是对于任意 $i < j$ ,$best_i \leq best_j$ 这样就 ...
- VS中添加自定义代码片段
前言 用#4敲出 #define _CRT_SECURE_NO_WARNINGS #include <iostream> using namespace std; int main(voi ...
- H5移动端下html上传图片被旋转问题
iOS下,html方式使用<input type="file">上传图片,图片会被旋转.遇到这个问题js是无法解决的,html也没有相应的解决方案.只能放到后台去处理, ...
- angular +H5 上传图片 与预览图片
//index.html <form class="form-horizontal"> <div class="panel panel-default& ...
- bzoj 3328 PYXFIB —— 单位根反演
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3328 单位根反演,主要用到了 \( [k|n] = \frac{1}{k} \sum\lim ...
- 深入解析array_merge函数的用法 php (转)
array_merge是我们用来合并数组使用最多的函数: 下面就来深入解析array_merge的用法: 第四点是个坑需注意: 1:如果数组中有相同的字符串键名: 则该键名后面的值覆盖前面的值: 如果 ...
- [C++] 贪心算法之活动安排、背包问题
一.贪心算法的基本思想 在求解过程中,依据某种贪心标准,从问题的初始状态出发,直接去求每一步的最优解,通过若干次的贪心选择,最终得出整个问题的最优解. 从贪心算法的定义可以看出,贪心算法不是从整体上考 ...