zoukankan      html  css  js  c++  java
  • 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. 解释程序代码

    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

  • 相关阅读:
    Restful api 返回值重复的问题
    fastDFS遇到的并发问题recv cmd: 0 is not correct, expect cmd: 100
    忽略警告@SuppressWarnings的用法
    Mysql 一些命令记录
    python 操作excel实现替换特定内容
    python 提取目录中特定类型的文件
    python使用tkinter无法获取输入框的值
    python使用tkinter无法给顶层窗体的输入框设定默认值
    游戏基础知识第一弹
    python 3.7.4 安装 opencv
  • 原文地址:https://www.cnblogs.com/aobosir/p/5928585.html
Copyright © 2011-2022 走看看