本质 : Verilog是一种即可用于电路设计也可用于模拟仿真的HDL语言,所谓HDL语言即描述线路的语言
类型 : ce que l’on a besoin d’apprendre , c’est seulement deux types qui pourraient etre synthetisés par des logiciels : reg et wire.
- reg, c’est un registre
- wire, c’est une wire..
- integer
语句 : on a seulement 3 types de description en Verilog, description d’agitation, de flux, et de structure.
- Description d’agitation :
always @ (posedge Clock or negedge
accepte seulement des reg comme variation
Reset_n); - Description de flux :
assign #1 A = B;
accepte seulement des wire
comme variation - Description de structure :
xor #1 (result, eq1, eq2);
框架1 :
module Hello(des inputs et des outputs pin) ;
//definition de pin : input ou output , inout
// definition des pins et des variables dans la module, et des « parameter »
//descriptions ....generalment, plus simple , plus belle.
endmodule
框架2 :
Always @ (posedge Clock or negedge Reset_n)
begin
end
赋值 :
A <= B // c’est en parallele
B <= C
{eq1, eq2, eq3, eq4} = 4’b0001 ;
assign a = b ;//a est une wire
在一个module中,变量只能在一个描述内被赋值,不可以有多个描述进行赋值
寄存器数组 :
- 1d :
reg [3:0] ABC
largeur est 4 - 2d :
reg [3:0] ABC [0:7]
largeur est 4, et longeur est 8
操作符 :
- 归约 : &与 ~非 |或 ^亦或 example : &4
b1000 = 1
b0 - 相等 : == != 至于全等,则不能用于综合
- 逻辑 : ! || &&
- 位操作 : ~每个二进制取反 & | ^
条件语句 :
if (condition)
begin
block
end
else
phrase ;
case ({A, B})
2`b00 : ...
endcase
循环语句 :
for (i =4 ; i <= 7 ; i = i +1)
begin
end
while (condition)
repeat (8)
begin
end
实例化模块
模块内 input 和 inout必须是线网,因为输入的肯定是一根电线。。。
输出可以随意
模块外相反。
状态机 :
Generalement, on l’ecrit sous la forme de 2 phases ou 3 phases. Le premier est temporel, deuxième est logic , 3eme pourrait etre temporel
任务
时序逻辑不推荐使用task
Testbench :
- Clock signal :
parameter FAST_PERIOD = 10 ;
reg Clock ;
initial
begin
Clock = 0 ;
forever # (FAST_PERIOD/2) Clock = ~Clock ;
end
end
initial
Clock = 0;
always # (FAST_PERIOD/2) Clock = ~Clock;
- Reset:
- 同步
- 异步