User Tag List

+ Trả lời chủ đề
Hiện kết quả từ 1 tới 1 của 1

Chủ đề: Ví dụ về Verilog

  1. #1
    svBK's Newbie
    Tham gia ngày
    May 2012
    Bài gửi
    7

    Mặc định Ví dụ về Verilog

    Ví dụ về Verilog - CRC song song


    Đoạn mã bên dưới là hỗ trợ CRC-CCITT 16-bit với chức năng sau:

    Độ rông = 16 bitsĐa thức bị chia nhỏ = 0x1021

    Giá trị ban đầu = 0xFFFF
    Dữ liệu ngõ vào không phản ánh
    CRC ngõ ra không được phản ánh
    Không có XOR được thực hiện trên CRC ngõ ra


    1 //-----------------------------------------------------
    2 // Design Name : parallel_crc_ccitt
    3 // File Name : parallel_crc.v
    4 // Function : CCITT Parallel CRC
    5 // Coder : -
    6 //-----------------------------------------------------
    7 module parallel_crc_ccitt (
    8 clk ,
    9 reset ,
    10 enable ,
    11 init ,
    12 data_in ,
    13 crc_out
    14 );
    15 //-----------Input Ports---------------
    16 input clk ;
    17 input reset ;
    18 input enable ;
    19 input init ;
    20 input [7:0] data_in ;
    21 //-----------Output Ports---------------
    22 output [15:0] crc_out;
    23 //------------Internal Variables--------
    24 reg [15:0] crc_reg;
    25 wire [15:0] next_crc;
    26 //-------------Code Start-----------------
    27 assign crc_out = crc_reg;
    28 // CRC Control logic
    29 always @ (posedge clk)
    30 if (reset) begin
    31 crc_reg <= 16'hFFFF;
    32 end else if (enable) begin
    33 if (init) begin
    34 crc_reg <= 16'hFFFF;
    35 end else begin
    36 crc_reg <= next_crc;
    37 end
    38 end
    39 // Parallel CRC calculation
    40 assign next_crc[0] = data_in[7] ^ data_in[0] ^ crc_reg[4] ^ crc_reg[11];
    41 assign next_crc[1] = data_in[1] ^ crc_reg[5];
    42 assign next_crc[2] = data_in[2] ^ crc_reg[6];
    43 assign next_crc[3] = data_in[3] ^ crc_reg[7];
    44 assign next_crc[4] = data_in[4] ^ crc_reg[8];
    45 assign next_crc[5] = data_in[7] ^ data_in[5] ^ data_in[0] ^ crc_reg[4] ^
    crc_reg[9] ^ crc_reg[11];
    46 assign next_crc[6] = data_in[6] ^ data_in[1] ^ crc_reg[5] ^ crc_reg[10];
    47 assign next_crc[7] = data_in[7] ^ data_in[2] ^ crc_reg[6] ^ crc_reg[11];
    48 assign next_crc[8] = data_in[3] ^ crc_reg[0] ^ crc_reg[7];
    49 assign next_crc[9] = data_in[4] ^ crc_reg[1] ^ crc_reg[8];
    50 assign next_crc[10] = data_in[5] ^ crc_reg[2] ^ crc_reg[9];
    51 assign next_crc[11] = data_in[6] ^ crc_reg[3] ^ crc_reg[10];
    52
    53 endmodule

    Thanks,
    Thông tin chi tiết tại website: http://www.semiconvn.com
    SEMICON - EDUCATION WITH TRUST
    Website:https://semiconvn.com

  2. Tớ cảm ơn thuy07 đã chia sẻ.


+ Trả lời chủ đề

Thông tin chủ đề

Users Browsing this Thread

Hiện có 1 người đọc bài này. (0 thành viên và 1 khách)

Từ khóa (Tag) của chủ đề này

Quyền viết bài

  • Bạn không thể gửi chủ đề mới
  • Bạn không thể gửi trả lời
  • Bạn không thể gửi file đính kèm
  • Bạn không thể sửa bài viết của mình


About svBK.VN

    Bách Khoa Forum - Diễn đàn thảo luận chung của sinh viên ĐH Bách Khoa Hà Nội. Nơi giao lưu giữa sinh viên - cựu sinh viên - giảng viên của trường.

Follow us on

Twitter Facebook youtube