HDLBits-Verilog学习小结(二)Declaring wires and 7458 chip

到目前为止,电路已经足够简单,以至于输出是输入的简单功能。
随着电路变得越来越复杂,我们需要电线将内部组件连接在一起。当需要使用导线时,应在首次使用之前在模块主体中声明它。 (将来,您会遇到更多类型的信号和变量,它们也以相同的方式声明,但是现在,我们将从wire类型的信号开始)。

1 Declaring wires

1.1 example

Declaring wires

在上面的模块中,有三根导线(in,out和not_in),其中两根已经声明为模块输入和输出端口的一部分(这就是为什么在前面的练习中无需声明任何导线的原因)。
电线not_in需要在模块内部声明。从模块外部看不到它。然后,使用两个assign语句创建两个NOT门。请注意,首先创建哪个非门都没关系,我们都会得到相同的电路。

solution:

module top_module (
    input in,              // Declare an input wire named "in"
    output out             // Declare an output wire named "out"
);

    wire not_in;           // Declare a wire named "not_in"

    assign out = ~not_in;  // Assign a value to out (create a NOT gate).
    assign not_in = ~in;   // Assign a value to not_in (create another NOT gate).

endmodule   // End of module "top_module"

1.2 practice

question:
实现下图电路。创建两条中间线(任意命名)以将AND和OR门连接在一起。请注意,将“非”门馈入的导线实际上是导线,因此不必在此处声明第三条导线。

practice
注意,导线是仅由一个源(一个门的输出)驱动的,但可以为多个输入供电。 如果遵循图中的电路结构,则应该以四个assign语句结束,因为有四个信号需要分配值。

solution:

`default_nettype none
module top_module(
    input a,
    input b,
    input c,
    input d,
    output out,
    output out_n   ); 
    
    wire e;
    wire f;
    assign e = a & b;
    assign f = c & d;
    assign out = e | f;
    assign out_n = ~(e | f); 

endmodule

2 chip named 7458

7458是具有四个“与”门和两个“或”门的芯片。这个问题比7420稍微复杂一些。
创建具有与7458芯片相同功能的模块。它具有10个输入和2个输出。可以选择使用assign语句来驱动每条输出线,也可以选择声明(四根)线用作中间信号,其中每条内部线由与门之一的输出驱动。
7458

尝试上述两种方式。

  • 方法一:
module top_module ( 
    input p1a, p1b, p1c, p1d, p1e, p1f,
    output p1y,
    input p2a, p2b, p2c, p2d,
    output p2y );
    
    assign p1y = (p1a & p1c & p1b)|(p1f & p1e & p1d);
    assign p2y = (p2c & p2d)|(p2a & p2b);

endmodule
  • 方法二:
module top_module ( 
    input p1a, p1b, p1c, p1d, p1e, p1f,
    output p1y,
    input p2a, p2b, p2c, p2d,
    output p2y );
    
    wire p3y = (p1f & p1e & p1d);
    wire p4y = (p1a & p1c & p1b);
    wire p5y = (p2c & p2d);
    wire p6y = (p2a & p2b);
    assign p1y = p3y|p4y;
    assign p2y = p5y|p6y;
    
endmodule
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值