реклама на сайте
подробности

 
 
> uart verilog
sergey sva
сообщение Oct 22 2013, 21:04
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Нужен uart с двумя сигналами rx tx , понимаю что не сложно сделать, может есть готовый? дайте ссылочку пожалуйста.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
sergey sva
сообщение Oct 31 2013, 10:16
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Столкнулся с проблемой, никак не разберусь почему CRC код не совпадает. Взял пример сгенерированный http://outputlogic.com/ пробовал с разными полиномами 1+x^2+x^15+x^16; и 1+x^13+x^15+x^16;
Получается не такой результат какой должен быть.
Думал что ошибся в направлении прохода сделал все сигналы 00,00,00,00,00,00,00,00. Подумал что ошибся с количеством, вывел переменную countbytes, все правильно в ней 8.
CRC Должно получиться при проходе по шине из 8 байт с значением 00 = 0x0B40. А получается 0x02d0

Код
// Copyright (C) 2009 OutputLogic.com
// This source file may be used and distributed without restriction
// provided that this copyright statement is not removed from the file
// and that any derivative work contains the original copyright notice
// and the associated disclaimer.
//
// THIS SOURCE FILE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS
// OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED    
// WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
//-----------------------------------------------------------------------------
// CRC module for data[7:0] ,   crc[15:0]=1+x^2+x^15+x^16;
//-----------------------------------------------------------------------------

module CRC( data_in, crc_en, crc_out,rst, clk, countbytes);
//---------------------------------------------------------------------//
//---------------------------------------------------------------------//
input [7:0] data_in;
input crc_en,rst, clk;
output [15:0] crc_out;
output[7:0] countbytes;
//---------------------------------------------------------------------//
//---------------------------------------------------------------------//
  reg [15:0] lfsr_q,lfsr_c;
  reg [7:0] countbytes_reg;
//---------------------------------------------------------------------//
//---------------------------------------------------------------------//
  assign crc_out = lfsr_q;
  assign countbytes = countbytes_reg;
//---------------------------------------------------------------------//
//---------------------------------------------------------------------//

  assign crc_out = lfsr_q;

  always @(posedge clk, posedge rst) begin
    if(rst) begin
      lfsr_q = {16{1'b1}};
        countbytes_reg = 0;
    end
    else begin
    
        if(crc_en)
        begin        
            lfsr_c[0] = lfsr_q[8] ^ lfsr_q[9] ^ lfsr_q[10] ^ lfsr_q[11] ^ lfsr_q[12] ^ lfsr_q[13] ^ lfsr_q[14] ^ lfsr_q[15] ^ data_in[0] ^ data_in[1] ^ data_in[2] ^ data_in[3] ^ data_in[4] ^ data_in[5] ^ data_in[6] ^ data_in[7];
            lfsr_c[1] = lfsr_q[9] ^ lfsr_q[10] ^ lfsr_q[11] ^ lfsr_q[12] ^ lfsr_q[13] ^ lfsr_q[14] ^ lfsr_q[15] ^ data_in[1] ^ data_in[2] ^ data_in[3] ^ data_in[4] ^ data_in[5] ^ data_in[6] ^ data_in[7];
            lfsr_c[2] = lfsr_q[8] ^ lfsr_q[9] ^ data_in[0] ^ data_in[1];
            lfsr_c[3] = lfsr_q[9] ^ lfsr_q[10] ^ data_in[1] ^ data_in[2];
            lfsr_c[4] = lfsr_q[10] ^ lfsr_q[11] ^ data_in[2] ^ data_in[3];
            lfsr_c[5] = lfsr_q[11] ^ lfsr_q[12] ^ data_in[3] ^ data_in[4];
            lfsr_c[6] = lfsr_q[12] ^ lfsr_q[13] ^ data_in[4] ^ data_in[5];
            lfsr_c[7] = lfsr_q[13] ^ lfsr_q[14] ^ data_in[5] ^ data_in[6];
            lfsr_c[8] = lfsr_q[0] ^ lfsr_q[14] ^ lfsr_q[15] ^ data_in[6] ^ data_in[7];
            lfsr_c[9] = lfsr_q[1] ^ lfsr_q[15] ^ data_in[7];
            lfsr_c[10] = lfsr_q[2];
            lfsr_c[11] = lfsr_q[3];
            lfsr_c[12] = lfsr_q[4];
            lfsr_c[13] = lfsr_q[5];
            lfsr_c[14] = lfsr_q[6];
            lfsr_c[15] = lfsr_q[7] ^ lfsr_q[8] ^ lfsr_q[9] ^ lfsr_q[10] ^ lfsr_q[11] ^ lfsr_q[12] ^ lfsr_q[13] ^ lfsr_q[14] ^ lfsr_q[15] ^ data_in[0] ^ data_in[1] ^ data_in[2] ^ data_in[3] ^ data_in[4] ^ data_in[5] ^ data_in[6] ^ data_in[7];

            countbytes_reg = countbytes_reg +1;    
            lfsr_q  = lfsr_c;
        end
        else begin
        
            lfsr_q  = lfsr_q;
        end    
            
      
    end
  end // always



endmodule // crc
//---------------------------------------------------------------------//
//---------------------------------------------------------------------//
Go to the top of the page
 
+Quote Post
Zig
сообщение Oct 31 2013, 16:56
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 185
Регистрация: 30-12-04
Пользователь №: 1 761



Цитата(sergey sva @ Oct 31 2013, 14:16) *
CRC Должно получиться при проходе по шине из 8 байт с значением 00 = 0x0B40. А получается 0x02d0

Код не смотрел, заметил, что если прочитать 0x0B40 задом на перед, то получается 0x02D0...
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- sergey sva   uart verilog   Oct 22 2013, 21:04
- - aT-DeviLru   Может быть подойдёт Verilog UART с opencores? ссыл...   Oct 22 2013, 21:31
- - count_enable   На opencores.org их как грязи, если надо стандартн...   Oct 22 2013, 21:31
- - filo   как передавать по uart 18битные данные? Я так пон...   Oct 23 2013, 04:38
- - Swup   Я как-то использовал модули отсюда: http://www.fpg...   Oct 23 2013, 05:20
|- - filo   Цитата(Swup @ Oct 23 2013, 08:20) Я как-т...   Oct 23 2013, 07:31
- - count_enable   Сначала определитесь, хотите ли уарт, по которому ...   Oct 23 2013, 10:00
|- - iosifk   Цитата(count_enable @ Oct 23 2013, 14:00)...   Oct 23 2013, 10:57
|- - filo   Цитата(count_enable @ Oct 23 2013, 13:00)...   Oct 23 2013, 11:59
- - sergey sva   Спасибо и правда сразу заработало Нужен генератор...   Oct 23 2013, 15:47
- - Andrew Su   Добрый день. Посмотрите, может понравится. Удачи.   Oct 23 2013, 17:22
- - sergey sva   Сейчас проверю может в направлениях сигналов ошибс...   Oct 31 2013, 19:23
- - sergey sva   Пробовал реверс бит результат не совпадает (. С ...   Nov 4 2013, 16:20
|- - Джеймс   Код always @(posedge clk, posedge rst) beg...   Nov 5 2013, 06:30
- - sergey sva   Может я что то не правильно понимаю для подсчета c...   Nov 7 2013, 11:02
- - sergey sva   ...   Nov 7 2013, 15:54
- - sergey sva   Блин ничего не понимаю, в чем я ошибся, или что то...   Nov 8 2013, 11:58


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 29th July 2025 - 02:26
Рейтинг@Mail.ru


Страница сгенерированна за 0.0139 секунд с 7
ELECTRONIX ©2004-2016