层次化设计
yummy
阅读:775
2022-04-01 21:30:43
评论:0
数字电路中根据模块层次不同有两种基本的结构设计方法:自底向上的设计方法和自顶向下的设计方法。
自底向上
自底向上的设计是一种传统的设计方法,对设计进行逐次划分的过程是存在的基本单元出发的,由基本单元构建高层单元,依次向上,直至构建系统。
自顶向下
从系统级开始,把系统分为基本单元,然后再把每个单元划分为下一层次的基本单元,一直这样做下去,直到直接可以用EDA元件库的原件来实现为止。
实验实现全加器
实验框图
代码部分
// Filename﹕ full_adder.v
// Author﹕YMY
// Description﹕全加器模块
// Calledby﹕/
// RevisionHistory﹕22-04-01
// Revision1.0
// Email﹕
// Company﹕
// Copyright(c) YMY, All right reserved
module full_adder(
input wire in_1 , //输入到全加器信号1
input wire in_2 , //输入到全加器信号2
input wire cin , //输入到全加器进位信号
output wire sum , //输出结果位
output wire count //输出进位
);
wire h0_sum ; //第一个半加器的和
wire h0_count ; //第一个半加器的进位
wire h1_count ; //第二个半加器的进位
half_adder half_adder_inst0
(
. in_1 (in_1 ), //输入信号1
. in_2 (in_2 ), //输入信号2
. sum (h0_sum ), //结果位
. count (h0_count) //进位
);
half_adder half_adder_inst1
(
. in_1 (h0_sum ), //输入信号1
. in_2 (cin ), //输入信号2
. sum (sum ), //结果位
. count (h1_count) //进位
);
assign count = (h0_count | h1_count);//两个半加器只要有一个进位,全加器就进位
endmodule
测试代码
// Filename﹕ full_adder.v
// Author﹕YMY
// Description﹕全加器模块
// Calledby﹕/
// RevisionHistory﹕22-04-01
// Revision1.0
// Email﹕
// Company﹕
// Copyright(c) YMY, All right reserved
`timescale 1ns/1ns
module 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
//产生随机数
always #10 in_1 = {$random}%2;
always #10 in_2 = {$random}%2;
always #10 cin = {$random}%2;
initial begin
//设置时间格式的系统函数
$timeformat(-9,0,"ns",6);
//检测打印函数
$monitor("@time,in_1=%b,in_2=%b,cin=%b,sum=%b,count=%b",$time,in_1,in_2,cin,sum,count);
end
full_adder full_adder_inst
(
. in_1 (in_1 ), //输入到全加器信号1
. in_2 (in_2 ), //输入到全加器信号2
. cin (cin ), //输入到全加器进位信号
. sum (sum ), //输出结果位
. count (count) //输出进位
);
endmodule
仿真波形
本文 zblog模板 原创,转载保留链接!网址:https://xn--zqqs03dbu6a.cn/?id=17
声明
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。