如何实现verilog被6整除?

时间:2017-10-25 04:54:10

标签: verilog

我想用verilog中的6个模块进行整除,使用2个模块整除并可以被3个模块整除,我抓住了这个想法,但也许我的verilog语法是错误的。

我要实现的模块结构如下,

module Divisible_6(input [3:0] a, output out);

使用

module Divisible_2(
input [3:0] a,
output out
);

module Divisible_3(
input [3:0] a,
output out
);

如果输入为6(0110),则divisible_2和divisible_3都输出1,

并且两者都进入AND门,然后出现1。

1 =真,0 =假。

如何用verilog语言实现这个想法?

感谢帮助,谢谢。

输入:1~15

2 个答案:

答案 0 :(得分:1)

由于我理解的问题与@Morgan有点不同,我宁愿尝试这段代码:

module Divisible_6(
  input [3:0] a,    
  output out
);

  wire out_1, out_2;

  assign out = out_1 & out_2;

  Divisible_2(
    .a  (a),
    .out(out_1)
  );

  Divisible_3(
    .a  (a),
    .out(out_2)
  );

endmodule

我假设Divisible_2Divisible_3都采用4位输入并返回布尔值(divisible(1)或not(0))。

答案 1 :(得分:0)

如果您的输入同时为divisible by 6divisible by 2,则需要divisible by 3设计才能获得。

因此,您可以使用这两个模块,如下面的代码。

// Defining the nets
logic out1, out2;

// Continuous Assignment
assign out = out1 & out2;

// Instantiation of 2 modules with instance name d1 & d2
divisible_2 d1 (a, out1);
divisible_3 d2 (a, out2);