当前位置: 首页 > 资讯 > >正文

07-层次化设计 -- 全加器 世界快看点

来源:博客园    时间:2023-05-22 22:30:55


(资料图)

1.层次化设计

数字电路中根据模块层次不同有两种基本的结构设计方法:自底向上的设计方法和自顶向下的设计方法

1.1 自底向上的设计方法(Bottom-Up)

自底向上的设计是一种传统的设计方法,对设计进行逐次划分的过程是从存在的基本单元出发的(基本单元是已有的或者是购买的),有基本单元构建高层单元,依次向上,直至构建系统

首先对现有的功能块进行分析,只用这些已经存在的模块,搭建比较大的功能块1.2 自上而下的设计方法(Top-Down)

从系统开始,把系统分为基本单元,然后再把每个单元划分为下一层次的基本单元,一直这样做下去,直到直接可以使用EDA元件库中的元件来实现为止

先确定顶层模块划分子模块对子模块进行分解实现最小的模块1.3 混合设计2.全加器设计使用半加器实现一个全加器使用按键KEY1,KEY2,KEY3表示in_1,in_2,c_inLED1,LED2分别表示sum,c_out2.1 框图和波形

将顶层模块进行继续划分

2.2 代码编写顶层模块和子模块放在同一个文件夹下,顶层模块可以例化子模块
module half_adder(  input wire in_1,  input wire in_2,  output wire sum,  output wire count);  assign {count,sum} = in_1 + in_2;  endmodule
module full_adder(  input wire in_1,    // 输入两个加数和一个低位进位  input wire in_2,  input wire cin,      output wire sum,    // 输出和 进位  output wire count);// 例化过程中需要引出的线,单独进行命名// 第一个半加器的输出 sum -- 顶层没有定义子模块的输出,所以要自己定义// 声明两个变量,将第一个半加器的输出引出来// 可以对变量进行重新进行命名wire h0_sum;wire h0_count;// 将第二个半加器的输出引出来wire h1_count;half_adder half_adder_inst1(  .in_1 (in_1),     // 输入in_1 in_2  .in_2 (in_2),  .sum  (h0_sum),   // in_1 ^ in_2  .count (h0_count) // in_1 & in_2);half_adder half_adder_inst2(  .in_1 (cin),    // 输入是第一个半加器的输入和进位  .in_2 (h0_count),   .sum  (sum),    // 输出是 in_1 ^ in_2 ^ cin  .count (h1_count) // 进位是 (in_1 ^ in_2) & cin + in_1 & in_2 );assign count = (h0_count | h1_count);endmodule
进行代码编译,检查是否出错需要将子模块和顶层模块都添加到工程当中进行编译2.3 Testbench
`timescale 1ns/1nsmodule tb_full_adder();  reg in_1;  reg in_2;  reg cin;  wire sum;  wire count;  initial begin    in_1 <= 1"b0;    in_2 <= 1"b0;    cin <= 1"b0;  end  initial begin    $timeformat(-9,0,"ns",6);    $monitor("@time:time=%t,in_1=%b,in_2=%b,cin=%b,sum=%b,count=%b",$time,in_1,in_2,cin,sum,count);  end  always #10 in_1 = {$random} % 2;  always #10 in_2 = {$random} % 2;  always #10 cin = {$random} % 2;    full_adder full_adder_inst(    .in_1 (in_1),    .in_2 (in_2),    .cin  (cin),    .sum  (sum),    .count (count)  );endmodule
添加仿真文件进行仿真2.4 上板验证

X 关闭

推荐内容

最近更新

Copyright ©  2015-2022 华声五金网版权所有  备案号:京ICP备2021034106号-36   联系邮箱:55 16 53 8 @qq.com