HDLBits--model

module

直接实例化即可
在这里插入图片描述

module top_module ( input a, input b, output out );
    mod_a instance1(.out(out),.in1(a),.in2(b));
endmodule

Module_pos

按照位置来实例化
在这里插入图片描述

module top_module ( 
    input a, 
    input b, 
    input c,
    input d,
    output out1,
    output out2
);
    mod_a instance1(out1,out2,a,b,c,d);
endmodule

Module_name

在这里插入图片描述

module top_module ( 
    input a, 
    input b, 
    input c,
    input d,
    output out1,
    output out2
);
    mod_a instance1(
        .in1(a),
        .in2(b),
        .in3(c),
        .in4(d),
        .out1(out1),
        .out2(out2)
    );
endmodule

Module_shift

在这里插入图片描述

module top_module ( input clk, input d, output q );
    wire q1,q2;
    my_dff dff1(clk,d,q1);
    my_dff dff2(clk,q1,q2);
    my_dff dff3(clk,q2,q);
endmodule

Module_shift8

在这里插入图片描述

module top_module ( 
    input clk, 
    input [7:0] d, 
    input [1:0] sel, 
    output [7:0] q 
);
	wire [7:0] q1,q2,q3;
    my_dff8 dff1(clk,d,q1);
    my_dff8 dff2(clk,q1,q2);
    my_dff8 dff3(clk,q2,q3);
    always @(*)begin
        case(sel)
            2'b00: q<=d;
            2'b01: q<=q1;
            2'b10: q<=q2;
            2'b11: q<=q3;
        endcase
    end
endmodule

Module_add

在这里插入图片描述

module top_module(
    input [31:0] a,
    input [31:0] b,
    output [31:0] sum
);
	wire cout1;
    add16 add1(
        .a(a[15:0]),
        .b(b[15:0]),
        .cin(1'b0),
        .cout(cout1),
        .sum(sum[15:0]));
    add16 add2(
        .a(a[31:16]),
        .b(b[31:16]),
        .cin(cout1),
        .cout(),
        .sum(sum[31:16]));
endmodule

Module_fadd

注意这里是不需要你编写add16模块内部的
相当于默认已经把add16内部的16个add1连接完成
只需要你设计add1内部
在这里插入图片描述

module top_module (
    input [31:0] a,
    input [31:0] b,
    output [31:0] sum
);
    wire cout1;
    add16 add_16(
                .a(a[15:0]),
                .b(b[15:0]),
                .cin(0),
                .sum(sum[15:0]),
                .cout(cout1)
    );
    add16 add_32(
                .a(a[31:16]),
                .b(b[31:16]),
       			 .cin(cout1),
                .sum(sum[31:16]),
                .cout()
    );

endmodule

module add1 ( input a, input b, input cin,   output sum, output cout );
    assign {cout,sum} = a+b+cin;
    //或采用逻辑表达式
    //assign sum = a^b^cin;
    //assign cout = cout = a&b | a&cin | b&cin;
endmodule

Module_cseladd

在这里插入图片描述

module top_module(
    input [31:0] a,
    input [31:0] b,
    output [31:0] sum
);
    wire sel;
    wire [31:16] sum1,sum2;
    add16 add16_0(
                .a(a[15:0]),					
                .b(b[15:0]),
        		.cin(1'b0),
                .sum(sum[15:0]),
                .cout(sel)
);
     add16 add16_1(
                 .a(a[31:16]),					
                 .b(b[31:16]),
         		.cin(1'b0),
         		.sum(sum1[31:16]),
                .cout()
);
    add16 add16_2(
                .a(a[31:16]),					
                .b(b[31:16]),
        		.cin(1'b1),
                .sum(sum2[31:16]),
                .cout()
);
    
    always @(sel)begin
        case(sel)
        	1'b0: sum[31:16] = sum1[31:16];
        	1'b1: sum[31:16] = sum2[31:16];
			default :sum <= 1'b0;            
        endcase
    end
    //assign sum[31:16] = sel?sum2:sum1;//也可以使用case语句
endmodule

Module_addsub

有复制操作
在这里插入图片描述

module top_module(
    input [31:0] a,
    input [31:0] b,
    input sub,
    output [31:0] sum
);
    wire cout1;
    wire[31:0] bb;
    assign bb = b^{32{sub}};
    add16 add1(
        .a(a[15:0]),
        .b(bb[15:0]),
        .cin(sub),
        .sum(sum[15:0]),
        .cout(cout1)
    );
	add16 add2(
        .a(a[31:16]),
        .b(bb[31:16]),
        .cin(cout1),
        .sum(sum[31:16]),
        .cout()
    );
endmodule

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
自动控制节水灌溉技术的高低代表着农业现代化的发展状况,灌溉系统自动化水平较低是制约我国高效农业发展的主要原因。本文就此问题研究了单片机控制的滴灌节水灌溉系统,该系统可对不同土壤的湿度进行监控,并按照作物对土壤湿度的要求进行适时、适量灌水,其核心是单片机和PC机构成的控制部分,主要对土壤湿度与灌水量之间的关系、灌溉控制技术及设备系统的硬件、软件编程各个部分进行了深入的研究。 单片机控制部分采用上下位机的形式。下位机硬件部分选用AT89C51单片机为核心,主要由土壤湿度传感器,信号处理电路,显示电路,输出控制电路,故障报警电路等组成,软件选用汇编语言编程。上位机选用586型以上PC机,通过MAX232芯片实现同下位机的电平转换功能,上下位机之间通过串行通信方式进行数据的双向传输,软件选用VB高级编程语言以建立友好的人机界面。系统主要具有以下功能:可在PC机提供的人机对话界面上设置作物要求的土壤湿度相关参数;单片机可将土壤湿度传感器检测到的土壤湿度模拟量转换成数字量,显示于LED显示器上,同时单片机可采用串行通信方式将此湿度值传输到PC机上;PC机通过其内设程序计算出所需的灌水量和灌水时间,且显示于界面上,并将有关的灌水信息反馈给单片机,若需灌水,则单片机系统启动鸣音报警,发出灌水信号,并经放大驱动设备,开启电磁阀进行倒计时定时灌水,若不需灌水,即PC机上显示的灌水量和灌水时间均为0,系统不进行灌水。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值