博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Verilog 语言 001 --- 入门级 --- 编写一个半加器电路模块
阅读量:4354 次
发布时间:2019-06-07

本文共 1084 字,大约阅读时间需要 3 分钟。

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. 解释程序代码

  1. 关键词 moduleendmodule 就像一个括号({}),任何一个功能模块的描述都必须放在此 “括号” 里面。
  2. h_adder 是模块的名字,名字自定义。
  3. h_adder 后面的括号和括号里的内容叫做:外部端口表。括号里面的内容:A, B, SO, CO,就是这个模块中所有 外部端口外部端口的名字自定义,类似 C语言 函数的形参。如果将这段程序比喻成一个电路的话,那么外部端口就是这个电路中引出的引脚。
  4. 使用 inputoutput 等关键字来定义 外部端口A, B, SO, CO)的属性。
    inputoutput 等关键字叫做:端口关键词。如果 外部端口 是输出引脚,就定义为:output;如果 外部端口 是输入引脚,就定义为:input;如果 外部端口 是输入输出引脚,就定义为:inout
  5. 以关键字 assign 引导的语句,是描述这个模块(当前例子的模块名为:h_adder)的逻辑功能和电路结构。简单的说,实现功能的语句使用关键字 assign 来修饰。

这样的一个模块程序,就相当于一个具有某种功能的电路模块硬件。比如:上面这段代码的功能就是 半加器 这个电路的功能。

3. 程序代码中需要注意的几点

  1. 模块的名字(h_adder),在命名的时候,需要注意:名称不能使用数字开头;不能出现中文;不能与EDA软件库中已定义好的关键词或元件名相同,比如:or2latch等。
  2. 除了 endmodule 语句不需要,其他的每条语句都使用 分号(;) 做为结束。
  3. 定义外部端口时,端口关键词(inputoutputinout等)后面可以定义多个外部端口,端口名之间使用逗号(,)相隔,最后加上 分号(;)。

4. 程序模板

模块语句的一般格式如下:

module 模块名 外部端口表 ;    定义外部端口属性    模块的功能描述endmodule

参考:

《EDA技术实用教程 — Verilog HDL版(第五版)》 3.1节 P59

转载于:https://www.cnblogs.com/aobosir/p/5928585.html

你可能感兴趣的文章
龙贝格求积
查看>>
H3C-端口镜像
查看>>
修改vs2013中MFC项目名称
查看>>
GDKOI2018发烧记
查看>>
Web API-路由(二)
查看>>
一些被忽略掉的面试题
查看>>
《大道至简》第三章读后感
查看>>
JavaScript中的ActiveXObject对象
查看>>
关于js foreach map
查看>>
ngRoute (angular-route.js) 和 ui-router (angular-ui-router.js) 模块有什么不同呢?
查看>>
Python--字典操作
查看>>
工作日志2014-07-16
查看>>
extjs_06_grid(列锁定&列分组)
查看>>
新版本号的tlplayer for android ,TigerLeapMC for windows公布了
查看>>
scrapy 爬取当当网产品分类
查看>>
第一周学习进度条
查看>>
【C++】reference parameter-引用参数
查看>>
C# 编写ActiveX
查看>>
NSValue的valueWithBytes:objCType:方法
查看>>
RasAPI函数实现PPPOE拨号
查看>>