分层次的电路设计方法

简介: ⭐本专栏针对FPGA进行入门学习,从数电中常见的逻辑代数讲起,结合Verilog HDL语言学习与仿真,主要对组合逻辑电路与时序逻辑电路进行分析与设计,对状态机FSM进行剖析与建模。
🔥文章和代码已归档至【Github仓库: hardware-tutorial】,需要的朋友们自取。或者关注公众号【AIShareLab】,回复 FPGA 也可获取。

分层次的电路设计方法

设计方法

使用自下而上的方法(bottom-up) :

  • 实例引用基本门级元件xor、and定义底层的半加器模块halfadder;
  • 实例引用两个半加器模块halfadder和一个基本或门元件or组合成为1位全加器模块fulladder;
  • 实例引用4个1位的全加器模块fulladder构成4位全加器的顶层模块。

全加器电路设计举例

一位半加器的描述

//************ 一位半加器的描述 ************
module halfadder (S,C,A,B);  //IEEE 1364—1995 Syntax
   input A,B;   //输入端口声明
   output S,C;  //输出端口声明
   xor (S,A,B);  //实例引用逻辑门原语
   and (C,A,B);
endmodule  

一位全加器的描述

//************ 一位全加器的描述 ************
module fulladder (Sum,Co,A,B,Ci);
   input A,B,Ci;         output Sum,Co;
   wire S1,D1,D2;           //内部节点信号声明
    halfadder HA1 (.B(B),.S(S1),.C(D1),.A(A));          //实例引用底层模块halfadder
    halfadder HA2 (.A(S1),.B(Ci), .S(Sum),.C(D2));  //端口信号按照名称对应关联
    or g1(Co,D2,D1);
endmodule

四位全加器的描述

//************四位全加器的描述************
module _4bit_adder (S,C3,A,B,C_1);
   input [3:0] A,B;
   input C_1;
   output [3:0] S; 
   output C3;
   wire C0,C1,C2;  //声明模块内部的连接线
   fulladder  U0_FA (S[0],C0,A[0],B[0],C_1); //实例引用模块fulladder
   fulladder  U1_FA (S[1],C1,A[1],B[1],C0);  //端口信号按照位置顺序对应关联
   fulladder  U2_FA (S[2],C2,A[2],B[2],C1); 
   fulladder  U3_FA (S[3],C3,A[3],B[3],C2);
endmodule 

模块实例引用语句

模块实例引用语句的格式如下:

module_name  instance_name(port_associations);

(port_associations)父、子模块端口的关联方式

  • 位置关联法: 父模块与子模块的端口信号是按照位置(端口排列次序)对应关联的
  • 名称关联法:

关于模块引用的几点注意事项:

  1. 模块只能以实例引用的方式嵌套在其他模块内,嵌套的层次是没有限制的。但不能在一个模块内部使用关键词module和endmodule去定义另一个模块,也不能以循环方式嵌套模块,即不能在always语句内部引用子模块。
  2. 实例引用的子模块可以是一个设计好的Verilog HDL设计文件(即一个设计模块),也可以是FPGA元件库中一个元件或嵌入式元件功能块,或者是用别的HDL语言(如VHDL、AHDL等)设计的元件,还可以是IP(Intellectual Property,知识产权)核模块。
  3. 在一条实例引用子模块的语句中,不能一部分端口用位置关联,另一部分端口用名称关联,即不能混合使用这两种方式建立端口之间的连接。
  4. 关于端口连接时有关变量数据类型的一些规定。

参考文献:

  1. Verilog HDL与FPGA数字系统设计,罗杰,机械工业出版社,2015年04月
  2. Verilog HDL与CPLD/FPGA项目开发教程(第2版), 聂章龙, 机械工业出版社, 2015年12月
  3. Verilog HDL数字设计与综合(第2版), Samir Palnitkar著,夏宇闻等译, 电子工业出版社, 2015年08月
  4. Verilog HDL入门(第3版), J. BHASKER 著 夏宇闻甘伟 译, 北京航空航天大学出版社, 2019年03月

欢迎关注公众号【AIShareLab】,一起交流更多相关知识,前沿算法,Paper解读,项目源码,面经总结。

目录
相关文章
|
5月前
|
芯片 异构计算
电路设计涉及的领域
1.模拟电路设计 2.数字电路设计 3.集成电路设计 4.系统级集成电路设计 5.PCB电路板设计 6.数字信号处理电路设计
47 1
|
6天前
|
移动开发 数据可视化
R语言两层2^k析因试验设计(因子设计)分析工厂产量数据和Lenth方法检验显著性可视化|数据分享(二)
R语言两层2^k析因试验设计(因子设计)分析工厂产量数据和Lenth方法检验显著性可视化|数据分享(二)
16 0
|
6天前
|
数据可视化
R语言两层2^k析因试验设计(因子设计)分析工厂产量数据和Lenth方法检验显著性可视化|数据分享(一)
R语言两层2^k析因试验设计(因子设计)分析工厂产量数据和Lenth方法检验显著性可视化|数据分享(一)
20 0
|
4月前
[贴装专题] 贴装流程中涉及到的位置关系计算
[贴装专题] 贴装流程中涉及到的位置关系计算
26 0
|
11月前
|
C++
如何理解变压器中的点约定?
从大型发电站到紧凑型 SMPS 电路,变压器几乎随处可见。尽管变压器的类型很多,并且它们的具体工作方式因应用而异,但变压器的基本工作方式保持不变。当我们检查其中包含变压器的原理图时,我们可能会注意到变压器绕组一端放置的“点”状符号。这些符号根据点约定(Dot Convention)规则放置。但它是什么?它的作用是什么?
283 0
|
存储 传感器 物联网
【数字逻辑 | 组合电路基础】电路基础知识
【数字逻辑 | 组合电路基础】电路基础知识
【数字逻辑 | 组合电路基础】电路基础知识
|
芯片
HDLBits练习汇总-06-组合逻辑设计测试--基础门设计
HDLBits练习汇总-06-组合逻辑设计测试--基础门设计
78 0
HDLBits练习汇总-06-组合逻辑设计测试--基础门设计
|
机器学习/深度学习 数据挖掘 大数据
层次分析法(AHP)原理以及应用
层次分析法(AHP)原理以及应用
1603 0
层次分析法(AHP)原理以及应用
|
vr&ar
【集合论】序关系 ( 全序关系 | 全序集 | 全序关系示例 | 拟序关系 | 拟序关系定理 | 三歧性 | 拟线序关系 | 拟线序集 )
【集合论】序关系 ( 全序关系 | 全序集 | 全序关系示例 | 拟序关系 | 拟序关系定理 | 三歧性 | 拟线序关系 | 拟线序集 )
461 0
【集合论】序关系 ( 全序关系 | 全序集 | 全序关系示例 | 拟序关系 | 拟序关系定理 | 三歧性 | 拟线序关系 | 拟线序集 )
|
人工智能 边缘计算 运维
从电源问题出发,带你揭秘新体系结构范式 COA
本文整理自 2020 年云原生微服务大会主论坛白海石的分享《Capability Oriented Architecture for cloud and edge》,主要介绍了一种新的体系结构范式——面向能力的体系结构(COA),旨在为跨云和边缘的分布式、自适应和健壮的应用程序提供一个设计框架。
从电源问题出发,带你揭秘新体系结构范式 COA