2015-12-19 7 views
0

Я пытаюсь написать программу в verilog о банковских операциях, так что просто вопрос, у меня есть очередь клиентов и счетчик счетчиков, как я могу написать формулу счетчика счетчиков.счетчик и счетчик клиентов

Ниже я попытался написать что-то, но если у вас есть идея, если его неправильное или истинное я хотел бы услышать. Кроме того, мне нужно реализовать, если teller counter =customer counter, то счетчик счетчиков должен быть увеличен. Большое вам спасибо за помощь!

always @ (posedge clk or posedge rst) 
begin   
    case (current_state) 
    IDLE:  
     teller_count <= cust_count; 
    teller: 
     teller_count <= teller_count+1; 
    default: 
     teller_count <= teller_count; 
    endcase 
end 
+2

Где вы написали логику 'rst'? Это похоже на FSM, где выполняется «... если счетчик счетчиков = счетчик клиентов, то счетчик счетчиков должен увеличиваться .... логика? Можете ли вы показать еще какой-нибудь код? – sharvil111

+0

Я предполагаю, что у вас также есть 'current_state <= next_state' и некоторая дополнительная логика состояния где-то. Без логики сброса вы не сможете имитировать его. Может быть, ссылка на пример на [EDA playground] (http://www.edaplayground.com/). – Morgan

ответ

0

Вы можете сделать вашу жизнь проще, написав два отдельных fsms, один для обработки каждой очереди. или по крайней мере два всегда блока, по одному для каждого.

стороне клиента будет выглядеть

if (new_customer & !free_teller) 
      customer <= customer + 1 
    ... 
    if (free_teller) 
      customer <= customer - 1 

стороны кассира будет выглядеть

at reset tellers = MAX_TELLER 
    ... 
    if (tellers == MAX_TELLER) 
     free_teller = 0; 
    else 
     free_teller = 1; 

получил идею?