VHDL ile Manchester Kodlama

VHDL ile Manchester Kodlama

Bilgisayar arası haberleşmede kullanılan kodlama tekniklerinden biri olan “ Manchester Kodlama ” da “ 1 ” biti 0’ dan 1’ e geçiş (01), “ 0 “ biti ise 1’ den 0’ a geçiş olarak tanımlanır,bu sayede gönderilen mesaj değiştirilmeden kodlaması değiştirilmiş olur. Kısacası 1-0 bitlerini Var-Yok şeklinde değil de “ Pulse “ şeklinde gönderen kodlama tekniğidir.

MC

Örneğin 8 bitlik bir paketi ele alacak olursak;
Mesaj: “ 01011101 ” olsun, Manchester Kodlanmış mesaj ise “ 10 01 10 01 01 01 10 01 “ olur.

(*Dip Not :Alternate Mark Inversion, Bi-Phase Encoding, Conditional Diphase, CMI Encoding, CSMA/CD, CSMA/CS, CSMA/CR, HDB3… Bilgisayarlar arası haberleşmede kullanılan diğer kodlama teknikleridir )

Tek bitlik Manchester Kodlama örneği:

  1. library IEEE;
  2. use IEEE.STD_LOGIC_1164.ALL;
  3. entity Manchester is
  4. port(
  5. clk : in std_logic;
  6. Data_in : in std_logic;
  7. Data_out : out std_logic
  8. );
  9. end Manchester;
  10. architecture Behavioral of Manchester is
  11. begin
  12. Data_out <= Data_in xor clk;
  13. end Behavioral;

 

Kodu sentezledikten sonra Synthesize –XST sekmesi içerisindeki View RTL Schematik seçeneğini seçerek karşımıza çıkan Startup Mode ekranından “Start with a schematic of the top –level block” seçeneğini seçerek şematik tasarımımıza ulaşıyoruz.
Şematikte karşımıza çıkan bloklara çift tıklayarak logic gate seviyesine kadar inip tasarımı detaylandırabiliriz.

mc_Tek_bit

Test Bench Programı

  1. LIBRARY ieee;
  2. USE ieee.std_logic_1164.ALL;
  3. ENTITY tb IS
  4. END tb;
  5. ARCHITECTURE behavior OF tb IS
  6. COMPONENT Manchester
  7. PORT(
  8. clk : IN std_logic;
  9. Data_in : IN std_logic;
  10. Data_out : OUT std_logic
  11. );
  12. END COMPONENT;
  13. --Inputs
  14. signal clk : std_logic := '0';
  15. signal Data_in : std_logic := '0';
  16. --Outputs
  17. signal Data_out : std_logic;
  18. BEGIN
  19. uut: Manchester PORT MAP (
  20. clk => clk,
  21. Data_in => Data_in,
  22. Data_out => Data_out
  23. );
  24. clk_process :process
  25. begin
  26. clk <= '0';
  27. wait for 5 ns;
  28. clk <= '1';
  29. wait for 5 ns;
  30. end process;
  31.  
  32. stim_proc: process
  33. begin
  34. Data_in <= '0';
  35. wait for 10 ns;
  36. Data_in <= '1';
  37. wait for 10 ns;
  38. Data_in <= '0';
  39. wait for 10 ns;
  40. Data_in <= '1';
  41. wait for 10 ns;
  42. Data_in <= '1';
  43. wait for 10 ns;
  44. Data_in <= '1';
  45. wait for 10 ns;
  46. Data_in <= '0';
  47. wait for 10 ns;
  48. Data_in <= '1';
  49. wait for 10 ns;
  50. end process;
  51. END;

MC_TEK_TB

Yorum

  1. By Mustafa Erdoğan

    Cevapla

  2. By Oğuzhan Gültekin

    Cevapla

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir