首页 > 其他分享 >04-Verilog基础

04-Verilog基础

时间:2023-02-09 00:44:38浏览次数:43  
标签:wire 04 基础 module Verilog endmodule input sel out

Module

Module是verilog中的关键字,是对电路建模的最小单元。verilog中构建一个电路,对于一个硬件进行描述在module中进行。

半加器

module half_adder(S,C,A,B);
  output S,C;
  input A,B;
  wire S,C,A,B;
  assign S = A ^ B;
  assign C = A & B;
endmodule

全加器

module full_adder(sum,cout,in1,in2,cin);
  output sum,cout;
  input in1,in2,in3;
  wire sum,cout,in1,in2,cin;

  half_adder ha1(I1,I2,in1,in2);
  half_adder ha2(sum,I3,I1,cin);
   
  assign cout = I2 || I3;
endmodule

Hierachical Names

Continuous Assignments(连续赋值语句)

  • 将左侧和右侧连起来,建立连接关系
  • 线网类表示逻辑门与模块之间的连接,具体的类型有:wire、wand、wor、tri、triand、trior、tri0、tri1、trireg、uwire、supply0、supply1

Structural Model(Gate Level)


  • 组合逻辑电路是没有DFF的,触发器如何描述,取决于综合逻辑工具。

半加器的实现

  • 使用verilog中的门电路实现半加器
module half_adder(S,C,A,B);
  output S,C;
  input A,B;
  
  wire S,C,A,B;
  
  xor #2 (S,A,B);
  and #1 (C,A,B);
endmodule

  • 这种门电路的实现是不推荐的,这里的门电路相当于将RTL代码进行逻辑综合之后映射到特定工艺库中的东西。

Behavioral Model-Procedure(i)

  • 实现二选一的mux
begin
  if(sel == 0)
    Y = B;
  else
    Y = A;
end


Block statement

  • fork-join是不可综合的,不能用于构建电路


Initial & Always

  • @--等的意思

event

半加器实现--always语句


  • 半加器和DFF
// half adder
module half_adder(S,C,A,B);
  output S,C;
  input A,B;
  
  reg S,C;

always @(A or B){
  S = A ^ B;
  C = A && B;
}

endmodule


//DFF
module dff(Q,D,Clk);
  output Q;
  input D,Clk;

  reg Q;
  wire D,Clk;

  always @(posedge Clk){
  Q = D; //这里这种写法是错误的,应该使用非阻塞赋值写法
}
endmodule



Timing

  • verilog语言中特有的

if

四选一mux实现

// 4-to-1 mux
module mux 4_1(out,in,sel);
  output out;
  input [3:0] in;
  input [1:0] sel;

  reg out;
  wire in,sel;
  
  always @(in or sel)
    if(sel == in[0])
      out = in[0];
    else if(sel == in[1]
      out = in[1];
    else if(sel == in[2]
      out = in[2];
    else 
      out = in[3];
 endmodule
  • 还可以使用三目运算符

case

实现四选一

module mux 4_1(out,in,sel);
  output out;
  input [3:0] in;
  input [1:0] sel;

  reg out;
  wire [3:0] in;
  wire [1:0] sel;
  
  always @(in or sel)
    case (sel)
    2'b00 : out = in[0];
    2'b01 : out = in[1];
    2'b10 : out = in[2];
    2'b11 : out = in[3];
    endcase
endmodule

for

  • 可以实现计数器
module count(Y,start);
  output [3:0] Y;
  input start;

  reg [3:0] Y;
  wire start;
  integer i;
  
  initial 
    Y = 0;
  
  always @(posedge start)
    for(i = 0;i < 3;i = i+1)
      #10 Y = Y + 1
endmodule
  • for循环是不是可综合的,取决于循环变量是不是固定的

while

repeat

forever

  • 时钟建模
module test;
  reg Clk;
  
  initial begin 
    clk = 0;
    foever #10 clk = ~clk;
    end
  other_module o1(clk,....);
  other_module o2(...,clk,...);
endmodule

标签:wire,04,基础,module,Verilog,endmodule,input,sel,out
From: https://www.cnblogs.com/Icer-newer/p/17103355.html

相关文章

  • 数组基础知识
    顺序表SeqList.h#define_CRT_SECURE_NO_WARNINGS#ifndef__SEQLIST_H__#define__SEQLIST_H__#include<stdio.h>#include<malloc.h>#include<assert.h>#include<s......
  • 二分查找 Leetcode704
    1.二分查找(Leetcode704)题目:给定一个n(n在[1,10000]之间)个元素有序的(升序)整型数组nums和一个目标值target,写一个函数搜索nums中的target,如果目标值存在返回下标,否......
  • java基础面试题
    java基础面试题1. Java有哪些数据类型?Java中有8种基本数据类型,分别为:6种数字类型(四个整数形,两个浮点型):byte、short、int、long、float、double,1种字符类型:char,1......
  • 链表基础
    二、链表:初识链表基础知识:什么是链表:链表是一种通过指针串联在一起的线性结构,每一个节点由两部分组成,一个是数据域一个是指针域(存放指向下一个节点的指针),最后一个节点......
  • Matplotlib基础
    Matplotlib1.什么是matplotlib​ 专门用于开发2D图表(包括3D图表,但不怎么擅长3D图表)以渐、交互式实现数据可视化2.hello_matplotlib简单折线图的绘制importmatp......
  • 02.java基础(一)java的基础、方法和数组
    目录Java基础Java特性Java程序运行机制Java基础语法1.数据类型基本类型引用类型数据类型扩展String类型内存分配过程转义字符类型转换变量常量2.运算符逻辑运算符、位运算......
  • 03java基础(二)java面向对象
    目录类和对象的基本使用基础概念类的初始化用new关键字创建对象创建对象的内存分析OOP的三大特征类的封装类的继承继承的基础使用继承基本概念extends关键字的基本使用supe......
  • 第2章 信息系统项目管理基础
    项目管理基础项目的概念项目是为提供一项独特产品、服务或成果所做的临时性努力。项目的特点主要特点(PMI归纳的)临时性(一次性)独特的产品、服务或成果逐......
  • 从0到1一步一步玩转openEuler--openEuler基础配置-设置语言环境和键盘
    8.1设置语言环境您可以通过localectl修改系统的语言环境,对应的参数设置保存在/etc/locale.conf文件中。这些参数会在系统启动过程中被systemd的守护进程读取。8.1.1显示......
  • 【CCCC】L3-004 肿瘤诊断 (30分),三维BFS
    problemL3-004肿瘤诊断(30分)在诊断肿瘤疾病时,计算肿瘤体积是很重要的一环。给定病灶扫描切片中标注出的疑似肿瘤区域,请你计算肿瘤的体积。输入格式:输入第一行给出4个正......