verilog入门知识【1】

最近在学数字逻辑和Verilog,研究单片机,于是发一发这些东西,希望能帮助有困惑的其他人。

Verilog与门、或门、非门、异或门、同或门的测试文件和仿真文件,

module Doors(
input wire a,
input wire b,
output wire [5:0] z
    );
    assign z[5]=a&b;
    assign z[4]=~(a&b);
    assign z[3]=a|b;
    assign z[2]=~(a|b);
    assign z[1]=a^b;
    assign z[0]=a~^b;
endmodule


仿真:

module sim();
reg a;
reg b;
wire [5:0]z;
Doors u1(a,b,z);
initial begin
a=0;
b=0;
end
always begin
#10 a=~a;
#40 b=~b;
end
endmodule




10-4BCD优先译码器:

`timescale 1 ns / 1 ps 
 module bm10_4 (a,clk,b); 
 input [9:0]a;
 input clk ;
 output [3:0]b;
 reg  [3:0] b; 
 always @ ( posedge clk )
     begin 
     case (a)
         10'b000000_0001 : b<=4'b0000;
         10'b000000_0010 : b<=4'b0001;
         10'b000000_0100 : b<=4'b0010;
         10'b000000_1000 : b<=4'b0011;
         10'b000001_0000 : b<=4'b0100;
         10'b000010_0000 : b<=4'b0101;
         10'b000100_0000 : b<=4'b0110;
         10'b001000_0000 : b<=4'b0111;
         10'b010000_0000 : b<=4'b1000;
         10'b100000_0000 : b<=4'b1001; 
         default : b<= 4'b0000;
     endcase 
     end
endmodule

仿真文件:
module bm10_4_sim;
reg [9:0]a;
reg clk;
wire [3:0]b;
bm10_4 u1(a,clk,b);
initial begin
clk=0;
a[0]=0;
a[1]=0;
a[2]=0;
a[3]=0;
a[4]=0;
a[5]=0;
a[6]=0;
a[7]=0;
a[8]=0;
a[9]=0;
end
always #2 clk=~clk;
always begin

#10 a[0]=~a[0];
#20 a[1]=~a[1];
#30 a[2]=~a[2];
#40 a[3]=~a[3];
#50 a[4]=~a[4];
#60 a[5]=~a[5];
#70 a[6]=~a[6];
#80 a[7]=~a[7];
#90 a[8]=~a[8];
#100 a[9]=~a[9];
end

endmodule




原文地址:https://www.cnblogs.com/hitWTJ/p/9865453.html