====== Code Examples ======
===== Door opener, combinational =====
^ VHDL ^ Verilog ^
| 
library ieee;
use ieee.std_logic_1164.all;
entity DoorOpener is
  port (C, H, P : in  std_logic;
        F       : out std_logic);
end DoorOpener;
architecture beh of DoorOpener is
begin
  process (C, H, P)
  begin
    F <= not(C) and (H or P);
  end process;
end beh;
 | 
module DoorOpener(C, H, P, F);
   input  C, H, P; 
   output F; 
   reg    F;
  
   always @(C, H, P) 
     begin
        F <= (~C) & (H | P);
     end
endmodule
 |
===== D-FF, variable width, sequential =====
^ VHDL ^ Verilog ^
| 
library IEEE;
use IEEE.std_logic_1164.all;
entity DFF is
  generic (Width : natural);
  port (
    CLK : in  std_logic;
    RST : in  std_logic;
    D   : in  std_logic_vector(Width-1 downto 0);
    Q   : out std_logic_vector(Width-1 downto 0));
end entity DFF;
architecture RTL of DFF is
begin   -- DFF with asynchr. low-active reset
  DFF : process (CLK, RST)
  begin
    if (RST = '0') then
      Q <= (others => '0');
    elsif rising_edge(CLK) then
      Q <= D;
    end if;
  end process DFF;
end architecture RTL;
 | 
module DFF (CLK, RST, D, Q);
parameter Width = 8;
input   CLK, RST;
input  [Width-1:0] D;
output [Width-1:0] Q;
reg    [Width-1:0] Q;
// DFF with asynchr. low-active reset
always @(posedge CLK or negedge RST )
  begin: DFF // block Name
     if (~RST) begin
       Q = 0;
     end
     else
       Q = D;
  end
endmodule
 even shorter ... 
module DFF (CLK, RST, D, Q);
parameter Width = 8;
input   CLK, RST;
input  [Width-1:0] D;
output [Width-1:0] Q;
reg    [Width-1:0] Q;
// DFF with asynchr. low-active reset
always @(posedge CLK or negedge RST)
  if (~RST) Q = 0;
  else      Q = D;
endmodule
 |
{{:courses:system_design:vhdl_vs_verilog:folie402_ff-waveform.png?nolink|D-FF Waveform}}