FPGA学习篇——Verilog学习特别篇1(代码编写篇)

这里主要记录我在代码编写过程中遇到的错误或者代码编写的格式问题:

1 case...endcase 算一个执行语句

当使用always等结构语句,当里面有多个执行语句时,我们可以用begin...end括起来。

这里 一个完整的case...endcase 算一个执行语句,故可不用begin...end,如以下例子编译无误。

2 多个同类型端口可一起定义:

如图,多个input同类型端口可一起定义:

3 画出带具体数据的波形,需要用reg作为输出:

想要画出这种输出不是单一波形,而是存储的数据的,如图:当输入为000时,输出为00000001。

要在仿真文件和子模块中的输出都必须为reg类型。

如下:左图为仿真模块。右图为子模块。

 

4 用" , "还是" ; "

在某些结构内,执行语句用,如module...endmodule和模块例化,且执行语句中最后一个语句,不用使用任何符号,但括号外用分号:

module Decoder3_8
(
    input in1,

    input in2
    
    output reg[7:0] out 

);

Decoder3_8 u_Decoder3_8
(
    .in1(top_in1),
    .in2(top_in2)
    .in3(top_in3
    .out(top_out)
);


除上述一些结构外,执行语句都用分号“ ;”结尾,如:

always #10 top_in1 <= {$random} % 2;
always #10 top_in2 <= {$random} % 2;
always #10 top_in3 <= {$random} % 2;

    case({in1,in2,in3})
        3'b000: out = 8'b0000_0001;
        3'b001: out = 8'b0000_0010;
        3'b010: out = 8'b0000_0100;
        3'b011: out = 8'b0000_1000;
        3'b100: out = 8'b0001_0000;
        3'b101: out = 8'b0010_0000;
        3'b110: out = 8'b0100_0000;
        3'b111: out = 8'b1000_0000;
        default: out = 8'b0000_0001;
    endcase

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值