HDLBits_Verilog语法基础

HDLBits链接


线信号

与物理电线不同,Verilog中的线信号(和其他信号)是“方向性的”。这意味着信息只向一个方向流动,从驱动程序流向接收器。在Verilog“连续赋值”(assign left_side = right_side; )中,右侧信号的值被驱动到左侧的连接上。assign赋值是“连续的”,右侧的值发生变化时左边的值立马发生变化。

这时我们就会理解:一个线信号不能有两个驱动程序来驱动;线信号如果没有驱动程序的话那么输出就是未知的。

当存在多个assign语句时,assign出现的顺序和位置不影响,也就相当于连线的顺序不影响最终结果,这个要和软件的思维区别开。

基础的门操作

区分按位取反(~) 和逻辑取反(!)

1

区分按位与(&)和逻辑与(&&)

2

区分按位或(|)和逻辑或(||)

A NOR gate is an OR gate with its output inverted.

3

按位异或

4

7458芯片

5

题目描述

按照电路图,用verilog语言描述输入输出间的关系。

Solution1:

1
2
3
4
5
6
7
8
9
10
11
12
13
module top_module ( 
input p1a, p1b, p1c, p1d, p1e, p1f,
output p1y,
input p2a, p2b, p2c, p2d,
output p2y );
wire and1_out,and2_out,and3_out,and4_out;
assign and1_out=p2a&p2b;
assign and2_out=p2c&p2d;
assign and3_out=p1a&p1c&p1b;
assign and4_out=p1f&p1e&p1d;
assign p2y=and1_out|and2_out;
assign p1y=and3_out|and4_out;
endmodule

Soluton2:

1
2
3
4
5
6
7
8
module top_module ( 
input p1a, p1b, p1c, p1d, p1e, p1f,
output p1y,
input p2a, p2b, p2c, p2d,
output p2y );
assign p2y=(p2a&p2b)|(p2c&p2d);
assign p1y=(p1a&p1c&p1b)|(p1f&p1e&p1d);
endmodule

总结

1、assign为连续赋值,赋值顺序不影响。

2、一个wire有且仅能有一个driver。

3、学习了基础的门操作。