Verilog-95 (IEEE 1364-1995, Open Verilog International)
Verilog-2001 (IEEE 1364-2001, Open Verilog International)
Verilog-2005 (IEEE 1364-2005, Accellera)
Время
IEEE 1364
IEEE P1800
2001
2005
1995
1983
1985
1990
Фил Мурби (Phil Moorby)
Strength1: supply1, strong1, pull1, large1, weak1, medium1, small1, highz1
Strength0: supply0, strong0, pull0, large0, weak0, medium0, small0, highz0
Силы сигналов
wire a, e, d;
wire [3:0] b;
wire (strong1, weak0) [32:0] c;
reg A;
reg [100:0] B;
reg [31:0] mem[0:255]; // память, 32 слова по 256 бит
integer C;
real D;
Операторы case, casex, casez
reg [1:0] sel;
reg [15:0] in0, in1, in2, in3, out;
case (sel)
2'b00: out = in0;
2'b01: out = in1;
2'b10: out = in2;
2'b11: out = in3;
default out = 16'bx;
endcase
reg [1:0] sel, flag;
reg [15:0] in0, in1, in2, in3, out;
casex (sel)
2'b00: out = in0;
2'b01: out = in1;
2'b0x,
2'b0z: out = flag ? 16'bx : 16'b0;
2'b10: out = in2;
2'b11: out = in3;
2'bx0, 2'bz0: out = flag ? 16'bx: 16'b0;
default out = 16'bx;
endcase
begin : search_first
reg [7:0] tempi;
for (tempi = 0; tempi < memsize; tempi = tempi + 1)
begin: search
if (memory[tempi] == 0)
disable search;
end
end
* LHS delay = left hand side delay, задержка с левой стороны
* RHS delay = right hand side delay, задержка с правой стороны
Процедурное присваивание, RHS delay
(часть 2)
.scope S_00672410;
T_0 ;
%set/v v00672490_0, 1, 1;
%movi 8, 1000, 11;
%ix/get 0, 8, 11;
%delayx 0;
%load/v 8, v00672490_0, 1;
%set/v v006865A0_0, 8, 1;
%set/v v006864F0_0, 0, 1;
%movi 8, 200, 9;
%ix/get 0, 8, 9;
%delayx 0;
%load/v 8, v006864F0_0, 1;
%set/v v006865F8_0, 8, 1;
%set/v v00686548_0, 1, 1;
%movi 8, 400, 10;
%ix/get 0, 8, 10;
%delayx 0;
%load/v 8, v00686548_0, 1;
%set/v v00686650_0, 8, 1;
%delay 100, 0;
%end;
.thread T_0;
.scope S_00672410;
(часть 3)
T_1 ;
%ix/load 0, 1;
%assign/v0 v006866A8_0, 1000, 1;
%ix/load 0, 1;
%assign/v0 v00686728_0, 200, 0;
%ix/load 0, 1;
%assign/v0 v00686780_0, 400, 1;
%end;
.thread T_1;
.scope S_00672410;
T_2 ;
%vpi_call 2 18 "$dumpfile", "block.vcd";
%vpi_call 2 19 "$dumpvars";
%end;
.thread T_2;
reg enable, a, b;
initial begin
wait (!enable) #10 a = 1; // модельное время = 110
#10 b = 1; // модельное время = 120
end
initial
#100 enable = 0;
fork
#30 a = 0; // #30
#10 a = 1; // #10
join
fork
@(posedge clock) q = 0;
@(posedge clock) w = 1;
join
begin
fork
@Aevent;
@Bevent;
join
areg = breg;
end
// Файл main.v:
`include lazy.v
module main;
reg clk;
wire [1:10] out_a, in_a;
wire [1:5] out_b, in_b;
lazy #(10, 15) mod_a (out_a, in_a, clk);
lazy mod_b (out_b, in_b, clk);
#800 $finish;
always
#100 clk = ~clk;
initial begin
clk = 0;
in_a = 10’b11111_01011;
in_b = 5’b10101;
end
endmodule
module stimulus;
reg in;
wire out;
inv_sw I0 (out, in);
initial begin
#2 $display (“in - out");
forever #5 $display ("%b - %b", in, out);
end
initial begin
#5 in=1'b1;
#5 in=1'b0;
#5 in=1'b1;
#5 in=1'b0;
#5 in=1'b0;
#5 in=1'b1;
#5 in=1'b0;
#5 in=1'b1;
#5 in=1'b0;
#5 $finish;
end
endmodule
/* in - out
1 - 0
0 - 1
1 - 0
0 - 1
0 - 1
1 - 0
0 - 1
1 - 0
0 - 1
*/
Поведенческая модель мультиплексора
module main();
reg [1:0] ctl;
wire [15:0] A, B, C, D;
wire [15:0] Y;
assign A = 'h11;
assign B = 'h22;
assign C = 'h33;
assign D = 'h44;
mux mux1(A, B, C, D, ctl, Y);
initial
begin
#10 ctl = 2'b00;
#10 ctl = 2'b01;
#10 ctl = 2'b10;
#10 ctl = 2'b11;
#10;
$finish;
end
endmodule
Модель мультиплексора на VHDL, часть 1
begin
mux1: mux
port map (
in0 => A,
in1 => B,
in2 => C,
in3 => D,
VL_out => Y,
sel => ctl
);
process is
begin
wait for 10 ns;
ctl <= "01";
wait for 10 ns;
ctl <= "10";
wait for 10 ns;
ctl <= "11";
wait for 10 ns;
assert false report "SIMULATION FINISHED" severity failure;
wait;
end process;
end architecture;
process is
begin
case sel is
when "00" =>
VL_out_Reg <= in0;
when "01" =>
VL_out_Reg <= in1;
when "10" =>
VL_out_Reg <= in2;
when "11" =>
VL_out_Reg <= in3;
when others =>
VL_out_Reg <= "UUUUUUUUUUUUUUUU";
end case;
wait on sel, in0, in1, in2, in3;
end process;
end architecture;
Модель мультиплексора на VHDL, часть 2
Если не удалось найти и скачать презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:
Email: Нажмите что бы посмотреть