Что такое параметры N и M в генераторе скорости передачи данных?

Я пытаюсь понять, как работает UART для RS232 в HDL.

Он использует генератор скорости передачи данных, который генерирует конкретную скорость передачи данных, которую вы хотите, верно? например 9600, 115200, ...

Это код, который всегда появляется в генераторе скорости передачи данных:

module mod_m_counter
#(
    parameter N = 4,
    parameter M = 10
 )
 (
    input  wire clk, reset,
    output wire max_tick,
    output wire [N-1:0] q
 );

reg [N-1:0] r_reg;
wire [N-1:0] r_next;

always@( posedge clk, posedge reset )
    if( reset )
        r_reg <= 0;
    else
        r_reg <= r_next;

assign r_next = ( r_reg == (M-1) ) ? 0 : r_reg + 1;

assign q = r_reg;

assign max_tick = ( r_reg == (M-1) ) ? 1'b1 : 1'b0;

endmodule

Я не понимаю, что такое N и M?

Если, например, я хочу создать скорость 9600 бод, какие N и M выбрать?

Заранее спасибо.


person user204415    schedule 16.02.2016    source источник


Ответы (2)


Имя модуля очень точно описывает, что он делает: mod_m_counter — это счетчик с модулем M (т. е. он считает от 0 до M-1). Когда значение счетчика равно M-1, повышается сигнал max_tick.

N должно равняться ceil(log2(M-1)), так как представляет количество битов, необходимых для хранения значений до M-1 включительно.

person wilcroft    schedule 16.02.2016
comment
Ok. N = ceil(log2(M-1)) а при чем тут М? M должен быть связан с моими часами (50 МГц) и скоростью передачи данных 19200, но я не могу найти связь. - person Condor; 16.02.2016
comment
Будет зависеть от ширины вашего символа и от того, какие другие модули есть в системе. Обратите внимание, что обычно эти параметры задаются модулем более высокого уровня, который его создал, переопределяя значения по умолчанию. Предполагая, что это контролирует какой-то 16-битный UART, вы можете попробовать M = 325 (50,000k/(16*9.6k)) - person wilcroft; 16.02.2016

Чтобы понять это, вы должны сначала понять связь между счетчиком mod-n и входной частотой F.

Счетчик Mod-N будет делить входную частоту F на N. Таким образом, счетчик Mod-n является делителем частоты, а выходная частота будет F/N.

UART будет использоваться с микропроцессором или внутри микроконтроллера.

Теперь, как правило, текущие скорости микропроцессора выражены в ГГц, а текущие скорости микроконтроллеров - в кГц. Но скорости UART очень и очень меньше, чем скорости контроллера/процессора.

Вот почему вам нужно иметь более низкую частоту, чем частота процессора для модуля UART, и чтобы получить эту более низкую частоту, этот мод использует счетчики.

Теперь, чтобы узнать, какое значение вы должны записать в M, N для конкретной скорости передачи данных, можно решить, только проверив спецификации модуля.

person Karan Shah    schedule 17.02.2016