Перейти к содержанию
    

Функциональная схема модуля Verilog

Здравствуйте ! Пожалуйста, помогите разобраться с функциональной схемой модуля Verilog.

Необходимо нарисовать функциональную схему по коду. Буду благодарен любым пояснениям. :help

Данный модуль выделяет десятки и единицы. Кто-то подал идею, что здесь 2 каскадно-соединенных счетчика.

`timescale 1ns / 1ps

module CNTS_ONE(
input [5:0] CNT_SEC,
input [5:0] CNT_MIN,
input [5:0] CNT_HOUR,

output reg [3:0] CNT1,
output reg [3:0] CNT2,
output reg [3:0] CNT3,
output reg [3:0] CNT4,
output reg [3:0] CNT5,
output reg [3:0] CNT6
   );


always @ (CNT_SEC) 
begin 
	case (CNT_SEC) 
		 0 : begin CNT2 <= 0; CNT1 <= 0; end
		 1 : begin CNT2 <= 0; CNT1 <= 1; end
		 2 : begin CNT2 <= 0; CNT1 <= 2; end
		 3 : begin CNT2 <= 0; CNT1 <= 3; end
		 4 : begin CNT2 <= 0; CNT1 <= 4; end
		 5 : begin CNT2 <= 0; CNT1 <= 5; end
		 6 : begin CNT2 <= 0; CNT1 <= 6; end
		 7 : begin CNT2 <= 0; CNT1 <= 7; end
		 8 : begin CNT2 <= 0; CNT1 <= 8; end
		 9 : begin CNT2 <= 0; CNT1 <= 9; end
	   10 : begin CNT2 <= 1; CNT1 <= 0; end
		11 : begin CNT2 <= 1; CNT1 <= 1; end
		12 : begin CNT2 <= 1; CNT1 <= 2; end
		13 : begin CNT2 <= 1; CNT1 <= 3; end
		14 : begin CNT2 <= 1; CNT1 <= 4; end
		15 : begin CNT2 <= 1; CNT1 <= 5; end
		16 : begin CNT2 <= 1; CNT1 <= 6; end
		17 : begin CNT2 <= 1; CNT1 <= 7; end
		18 : begin CNT2 <= 1; CNT1 <= 8; end
		19 : begin CNT2 <= 1; CNT1 <= 9; end
		20 : begin CNT2 <= 2; CNT1 <= 0; end
		21 : begin CNT2 <= 2; CNT1 <= 1; end
		22 : begin CNT2 <= 2; CNT1 <= 2; end
		23 : begin CNT2 <= 2; CNT1 <= 3; end
		24 : begin CNT2 <= 2; CNT1 <= 4; end
		25 : begin CNT2 <= 2; CNT1 <= 5; end
		26 : begin CNT2 <= 2; CNT1 <= 6; end
		27 : begin CNT2 <= 2; CNT1 <= 7; end
		28 : begin CNT2 <= 2; CNT1 <= 8; end
		29 : begin CNT2 <= 2; CNT1 <= 9; end
		30 : begin CNT2 <= 3; CNT1 <= 0; end
		31 : begin CNT2 <= 3; CNT1 <= 1; end
		32 : begin CNT2 <= 3; CNT1 <= 2; end
		33 : begin CNT2 <= 3; CNT1 <= 3; end
		34 : begin CNT2 <= 3; CNT1 <= 4; end
		35 : begin CNT2 <= 3; CNT1 <= 5; end
		36 : begin CNT2 <= 3; CNT1 <= 6; end
		37 : begin CNT2 <= 3; CNT1 <= 7; end
		38 : begin CNT2 <= 3; CNT1 <= 8; end
		39 : begin CNT2 <= 3; CNT1 <= 9; end
		40 : begin CNT2 <= 4; CNT1 <= 0; end
		41 : begin CNT2 <= 4; CNT1 <= 1; end
		42 : begin CNT2 <= 4; CNT1 <= 2; end
		43 : begin CNT2 <= 4; CNT1 <= 3; end
		44 : begin CNT2 <= 4; CNT1 <= 4; end
		45 : begin CNT2 <= 4; CNT1 <= 5; end
		46 : begin CNT2 <= 4; CNT1 <= 6; end
		47 : begin CNT2 <= 4; CNT1 <= 7; end
		48 : begin CNT2 <= 4; CNT1 <= 8; end
		49 : begin CNT2 <= 4; CNT1 <= 9; end
		50 : begin CNT2 <= 5; CNT1 <= 0; end
		51 : begin CNT2 <= 5; CNT1 <= 1; end
		52 : begin CNT2 <= 5; CNT1 <= 2; end
		53 : begin CNT2 <= 5; CNT1 <= 3; end
		54 : begin CNT2 <= 5; CNT1 <= 4; end
		55 : begin CNT2 <= 5; CNT1 <= 5; end
		56 : begin CNT2 <= 5; CNT1 <= 6; end
		57 : begin CNT2 <= 5; CNT1 <= 7; end
		58 : begin CNT2 <= 5; CNT1 <= 8; end
		59 : begin CNT2 <= 5; CNT1 <= 9; end
		default : begin CNT2 <= 0; CNT1 <= 0; end			
	endcase 
end 

always @ (CNT_MIN) 
begin 
	case (CNT_MIN) 
		 0 : begin CNT4 <= 0; CNT3 <= 0; end
		 1 : begin CNT4 <= 0; CNT3 <= 1; end
		 2 : begin CNT4 <= 0; CNT3 <= 2; end
		 3 : begin CNT4 <= 0; CNT3 <= 3; end
		 4 : begin CNT4 <= 0; CNT3 <= 4; end
		 5 : begin CNT4 <= 0; CNT3 <= 5; end
		 6 : begin CNT4 <= 0; CNT3 <= 6; end
		 7 : begin CNT4 <= 0; CNT3 <= 7; end
		 8 : begin CNT4 <= 0; CNT3 <= 8; end
		 9 : begin CNT4 <= 0; CNT3 <= 9; end
	   10 : begin CNT4 <= 1; CNT3 <= 0; end
		11 : begin CNT4 <= 1; CNT3 <= 1; end
		12 : begin CNT4 <= 1; CNT3 <= 2; end
		13 : begin CNT4 <= 1; CNT3 <= 3; end
		14 : begin CNT4 <= 1; CNT3 <= 4; end
		15 : begin CNT4 <= 1; CNT3 <= 5; end
		16 : begin CNT4 <= 1; CNT3 <= 6; end
		17 : begin CNT4 <= 1; CNT3 <= 7; end
		18 : begin CNT4 <= 1; CNT3 <= 8; end
		19 : begin CNT4 <= 1; CNT3 <= 9; end
		20 : begin CNT4 <= 2; CNT3 <= 0; end
		21 : begin CNT4 <= 2; CNT3 <= 1; end
		22 : begin CNT4 <= 2; CNT3 <= 2; end
		23 : begin CNT4 <= 2; CNT3 <= 3; end
		24 : begin CNT4 <= 2; CNT3 <= 4; end
		25 : begin CNT4 <= 2; CNT3 <= 5; end
		26 : begin CNT4 <= 2; CNT3 <= 6; end
		27 : begin CNT4 <= 2; CNT3 <= 7; end
		28 : begin CNT4 <= 2; CNT3 <= 8; end
		29 : begin CNT4 <= 2; CNT3 <= 9; end
		30 : begin CNT4 <= 3; CNT3 <= 0; end
		31 : begin CNT4 <= 3; CNT3 <= 1; end
		32 : begin CNT4 <= 3; CNT3 <= 2; end
		33 : begin CNT4 <= 3; CNT3 <= 3; end
		34 : begin CNT4 <= 3; CNT3 <= 4; end
		35 : begin CNT4 <= 3; CNT3 <= 5; end
		36 : begin CNT4 <= 3; CNT3 <= 6; end
		37 : begin CNT4 <= 3; CNT3 <= 7; end
		38 : begin CNT4 <= 3; CNT3 <= 8; end
		39 : begin CNT4 <= 3; CNT3 <= 9; end
		40 : begin CNT4 <= 4; CNT3 <= 0; end
		41 : begin CNT4 <= 4; CNT3 <= 1; end
		42 : begin CNT4 <= 4; CNT3 <= 2; end
		43 : begin CNT4 <= 4; CNT3 <= 3; end
		44 : begin CNT4 <= 4; CNT3 <= 4; end
		45 : begin CNT4 <= 4; CNT3 <= 5; end
		46 : begin CNT4 <= 4; CNT3 <= 6; end
		47 : begin CNT4 <= 4; CNT3 <= 7; end
		48 : begin CNT4 <= 4; CNT3 <= 8; end
		49 : begin CNT4 <= 4; CNT3 <= 9; end
		50 : begin CNT4 <= 5; CNT3 <= 0; end
		51 : begin CNT4 <= 5; CNT3 <= 1; end
		52 : begin CNT4 <= 5; CNT3 <= 2; end
		53 : begin CNT4 <= 5; CNT3 <= 3; end
		54 : begin CNT4 <= 5; CNT3 <= 4; end
		55 : begin CNT4 <= 5; CNT3 <= 5; end
		56 : begin CNT4 <= 5; CNT3 <= 6; end
		57 : begin CNT4 <= 5; CNT3 <= 7; end
		58 : begin CNT4 <= 5; CNT3 <= 8; end
		59 : begin CNT4 <= 5; CNT3 <= 9; end
		default : begin CNT4 <= 0; CNT3 <= 0; end			
	endcase 
end 	

always @ (CNT_HOUR) 
begin 
	case (CNT_HOUR) 
		 0 : begin CNT6 <= 0; CNT5 <= 0; end
		 1 : begin CNT6 <= 0; CNT5 <= 1; end
		 2 : begin CNT6 <= 0; CNT5 <= 2; end
		 3 : begin CNT6 <= 0; CNT5 <= 3; end
		 4 : begin CNT6 <= 0; CNT5 <= 4; end
		 5 : begin CNT6 <= 0; CNT5 <= 5; end
		 6 : begin CNT6 <= 0; CNT5 <= 6; end
		 7 : begin CNT6 <= 0; CNT5 <= 7; end
		 8 : begin CNT6 <= 0; CNT5 <= 8; end
		 9 : begin CNT6 <= 0; CNT5 <= 9; end
	   10 : begin CNT6 <= 1; CNT5 <= 0; end
		11 : begin CNT6 <= 1; CNT5 <= 1; end
		12 : begin CNT6 <= 1; CNT5 <= 2; end
		13 : begin CNT6 <= 1; CNT5 <= 3; end
		14 : begin CNT6 <= 1; CNT5 <= 4; end
		15 : begin CNT6 <= 1; CNT5 <= 5; end
		16 : begin CNT6 <= 1; CNT5 <= 6; end
		17 : begin CNT6 <= 1; CNT5 <= 7; end
		18 : begin CNT6 <= 1; CNT5 <= 8; end
		19 : begin CNT6 <= 1; CNT5 <= 9; end
		20 : begin CNT6 <= 2; CNT5 <= 0; end
		21 : begin CNT6 <= 2; CNT5 <= 1; end
		22 : begin CNT6 <= 2; CNT5 <= 2; end
		23 : begin CNT6 <= 2; CNT5 <= 3; end
		default : begin CNT6 <= 0; CNT5 <= 0; end			
	endcase 
end 

endmodule

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нет здесь никаких счётчиков. Просто отдельные десятичные декодеры. Еще и написанные не по правилам.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не знаяю Verilog, но...

Судя по названиям это обыкновенные часы, считают от 0 до 60 для секунд, минут и часов соответственно.

По значению в CNT_SEC 0..59 заполняются регистр CNT2 = десятки секунд, CNT1 = единицы секунд

По значению в CNT_MIN 0..59 заполняются регистр CNT4 = десятки минут, CNT3 = единицы минут

По значению в CNT_HOUR 0..23 заполняются регистр CNT6 = десятки часов, CNT5 = единицы часов

 

Никаких счетчиков, тупое назначение напрямую.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Здравствуйте ! Пожалуйста, помогите разобраться с функциональной схемой модуля Verilog.

Необходимо нарисовать функциональную схему по коду. Буду благодарен любым пояснениям. :help

Данный модуль выделяет десятки и единицы. Кто-то подал идею, что здесь 2 каскадно-соединенных счетчика.

`timescale 1ns / 1ps

module CNTS_ONE(
input [5:0] CNT_SEC,
input [5:0] CNT_MIN,
input [5:0] CNT_HOUR,

output reg [3:0] CNT1,
output reg [3:0] CNT2,
output reg [3:0] CNT3,
output reg [3:0] CNT4,
output reg [3:0] CNT5,
output reg [3:0] CNT6
   );


always @ (CNT_SEC) 
begin 
	case (CNT_SEC) 
		 0 : begin CNT2 <= 0; CNT1 <= 0; end
		 1 : begin CNT2 <= 0; CNT1 <= 1; end
		 2 : begin CNT2 <= 0; CNT1 <= 2; end
		 3 : begin CNT2 <= 0; CNT1 <= 3; end
		 4 : begin CNT2 <= 0; CNT1 <= 4; end
		 5 : begin CNT2 <= 0; CNT1 <= 5; end
		 6 : begin CNT2 <= 0; CNT1 <= 6; end
		 7 : begin CNT2 <= 0; CNT1 <= 7; end
		 8 : begin CNT2 <= 0; CNT1 <= 8; end
		 9 : begin CNT2 <= 0; CNT1 <= 9; end
	   10 : begin CNT2 <= 1; CNT1 <= 0; end
		11 : begin CNT2 <= 1; CNT1 <= 1; end
		12 : begin CNT2 <= 1; CNT1 <= 2; end
		13 : begin CNT2 <= 1; CNT1 <= 3; end
		14 : begin CNT2 <= 1; CNT1 <= 4; end
		15 : begin CNT2 <= 1; CNT1 <= 5; end
		16 : begin CNT2 <= 1; CNT1 <= 6; end
		17 : begin CNT2 <= 1; CNT1 <= 7; end
		18 : begin CNT2 <= 1; CNT1 <= 8; end
		19 : begin CNT2 <= 1; CNT1 <= 9; end
		20 : begin CNT2 <= 2; CNT1 <= 0; end
		21 : begin CNT2 <= 2; CNT1 <= 1; end
		22 : begin CNT2 <= 2; CNT1 <= 2; end
		23 : begin CNT2 <= 2; CNT1 <= 3; end
		24 : begin CNT2 <= 2; CNT1 <= 4; end
		25 : begin CNT2 <= 2; CNT1 <= 5; end
		26 : begin CNT2 <= 2; CNT1 <= 6; end
		27 : begin CNT2 <= 2; CNT1 <= 7; end
		28 : begin CNT2 <= 2; CNT1 <= 8; end
		29 : begin CNT2 <= 2; CNT1 <= 9; end
		30 : begin CNT2 <= 3; CNT1 <= 0; end
		31 : begin CNT2 <= 3; CNT1 <= 1; end
		32 : begin CNT2 <= 3; CNT1 <= 2; end
		33 : begin CNT2 <= 3; CNT1 <= 3; end
		34 : begin CNT2 <= 3; CNT1 <= 4; end
		35 : begin CNT2 <= 3; CNT1 <= 5; end
		36 : begin CNT2 <= 3; CNT1 <= 6; end
		37 : begin CNT2 <= 3; CNT1 <= 7; end
		38 : begin CNT2 <= 3; CNT1 <= 8; end
		39 : begin CNT2 <= 3; CNT1 <= 9; end
		40 : begin CNT2 <= 4; CNT1 <= 0; end
		41 : begin CNT2 <= 4; CNT1 <= 1; end
		42 : begin CNT2 <= 4; CNT1 <= 2; end
		43 : begin CNT2 <= 4; CNT1 <= 3; end
		44 : begin CNT2 <= 4; CNT1 <= 4; end
		45 : begin CNT2 <= 4; CNT1 <= 5; end
		46 : begin CNT2 <= 4; CNT1 <= 6; end
		47 : begin CNT2 <= 4; CNT1 <= 7; end
		48 : begin CNT2 <= 4; CNT1 <= 8; end
		49 : begin CNT2 <= 4; CNT1 <= 9; end
		50 : begin CNT2 <= 5; CNT1 <= 0; end
		51 : begin CNT2 <= 5; CNT1 <= 1; end
		52 : begin CNT2 <= 5; CNT1 <= 2; end
		53 : begin CNT2 <= 5; CNT1 <= 3; end
		54 : begin CNT2 <= 5; CNT1 <= 4; end
		55 : begin CNT2 <= 5; CNT1 <= 5; end
		56 : begin CNT2 <= 5; CNT1 <= 6; end
		57 : begin CNT2 <= 5; CNT1 <= 7; end
		58 : begin CNT2 <= 5; CNT1 <= 8; end
		59 : begin CNT2 <= 5; CNT1 <= 9; end
		default : begin CNT2 <= 0; CNT1 <= 0; end			
	endcase 
end 

always @ (CNT_MIN) 
begin 
	case (CNT_MIN) 
		 0 : begin CNT4 <= 0; CNT3 <= 0; end
		 1 : begin CNT4 <= 0; CNT3 <= 1; end
		 2 : begin CNT4 <= 0; CNT3 <= 2; end
		 3 : begin CNT4 <= 0; CNT3 <= 3; end
		 4 : begin CNT4 <= 0; CNT3 <= 4; end
		 5 : begin CNT4 <= 0; CNT3 <= 5; end
		 6 : begin CNT4 <= 0; CNT3 <= 6; end
		 7 : begin CNT4 <= 0; CNT3 <= 7; end
		 8 : begin CNT4 <= 0; CNT3 <= 8; end
		 9 : begin CNT4 <= 0; CNT3 <= 9; end
	   10 : begin CNT4 <= 1; CNT3 <= 0; end
		11 : begin CNT4 <= 1; CNT3 <= 1; end
		12 : begin CNT4 <= 1; CNT3 <= 2; end
		13 : begin CNT4 <= 1; CNT3 <= 3; end
		14 : begin CNT4 <= 1; CNT3 <= 4; end
		15 : begin CNT4 <= 1; CNT3 <= 5; end
		16 : begin CNT4 <= 1; CNT3 <= 6; end
		17 : begin CNT4 <= 1; CNT3 <= 7; end
		18 : begin CNT4 <= 1; CNT3 <= 8; end
		19 : begin CNT4 <= 1; CNT3 <= 9; end
		20 : begin CNT4 <= 2; CNT3 <= 0; end
		21 : begin CNT4 <= 2; CNT3 <= 1; end
		22 : begin CNT4 <= 2; CNT3 <= 2; end
		23 : begin CNT4 <= 2; CNT3 <= 3; end
		24 : begin CNT4 <= 2; CNT3 <= 4; end
		25 : begin CNT4 <= 2; CNT3 <= 5; end
		26 : begin CNT4 <= 2; CNT3 <= 6; end
		27 : begin CNT4 <= 2; CNT3 <= 7; end
		28 : begin CNT4 <= 2; CNT3 <= 8; end
		29 : begin CNT4 <= 2; CNT3 <= 9; end
		30 : begin CNT4 <= 3; CNT3 <= 0; end
		31 : begin CNT4 <= 3; CNT3 <= 1; end
		32 : begin CNT4 <= 3; CNT3 <= 2; end
		33 : begin CNT4 <= 3; CNT3 <= 3; end
		34 : begin CNT4 <= 3; CNT3 <= 4; end
		35 : begin CNT4 <= 3; CNT3 <= 5; end
		36 : begin CNT4 <= 3; CNT3 <= 6; end
		37 : begin CNT4 <= 3; CNT3 <= 7; end
		38 : begin CNT4 <= 3; CNT3 <= 8; end
		39 : begin CNT4 <= 3; CNT3 <= 9; end
		40 : begin CNT4 <= 4; CNT3 <= 0; end
		41 : begin CNT4 <= 4; CNT3 <= 1; end
		42 : begin CNT4 <= 4; CNT3 <= 2; end
		43 : begin CNT4 <= 4; CNT3 <= 3; end
		44 : begin CNT4 <= 4; CNT3 <= 4; end
		45 : begin CNT4 <= 4; CNT3 <= 5; end
		46 : begin CNT4 <= 4; CNT3 <= 6; end
		47 : begin CNT4 <= 4; CNT3 <= 7; end
		48 : begin CNT4 <= 4; CNT3 <= 8; end
		49 : begin CNT4 <= 4; CNT3 <= 9; end
		50 : begin CNT4 <= 5; CNT3 <= 0; end
		51 : begin CNT4 <= 5; CNT3 <= 1; end
		52 : begin CNT4 <= 5; CNT3 <= 2; end
		53 : begin CNT4 <= 5; CNT3 <= 3; end
		54 : begin CNT4 <= 5; CNT3 <= 4; end
		55 : begin CNT4 <= 5; CNT3 <= 5; end
		56 : begin CNT4 <= 5; CNT3 <= 6; end
		57 : begin CNT4 <= 5; CNT3 <= 7; end
		58 : begin CNT4 <= 5; CNT3 <= 8; end
		59 : begin CNT4 <= 5; CNT3 <= 9; end
		default : begin CNT4 <= 0; CNT3 <= 0; end			
	endcase 
end 	

always @ (CNT_HOUR) 
begin 
	case (CNT_HOUR) 
		 0 : begin CNT6 <= 0; CNT5 <= 0; end
		 1 : begin CNT6 <= 0; CNT5 <= 1; end
		 2 : begin CNT6 <= 0; CNT5 <= 2; end
		 3 : begin CNT6 <= 0; CNT5 <= 3; end
		 4 : begin CNT6 <= 0; CNT5 <= 4; end
		 5 : begin CNT6 <= 0; CNT5 <= 5; end
		 6 : begin CNT6 <= 0; CNT5 <= 6; end
		 7 : begin CNT6 <= 0; CNT5 <= 7; end
		 8 : begin CNT6 <= 0; CNT5 <= 8; end
		 9 : begin CNT6 <= 0; CNT5 <= 9; end
	   10 : begin CNT6 <= 1; CNT5 <= 0; end
		11 : begin CNT6 <= 1; CNT5 <= 1; end
		12 : begin CNT6 <= 1; CNT5 <= 2; end
		13 : begin CNT6 <= 1; CNT5 <= 3; end
		14 : begin CNT6 <= 1; CNT5 <= 4; end
		15 : begin CNT6 <= 1; CNT5 <= 5; end
		16 : begin CNT6 <= 1; CNT5 <= 6; end
		17 : begin CNT6 <= 1; CNT5 <= 7; end
		18 : begin CNT6 <= 1; CNT5 <= 8; end
		19 : begin CNT6 <= 1; CNT5 <= 9; end
		20 : begin CNT6 <= 2; CNT5 <= 0; end
		21 : begin CNT6 <= 2; CNT5 <= 1; end
		22 : begin CNT6 <= 2; CNT5 <= 2; end
		23 : begin CNT6 <= 2; CNT5 <= 3; end
		default : begin CNT6 <= 0; CNT5 <= 0; end			
	endcase 
end 

endmodule

 

Дорогой друг! Здесь все очень даже просто.

То что описано в прикрепленном к посту коде есть ни что иное как обычные три дешифратора.

 

Как известно, дешифратор необходим для дешифрации кода. В вашем случае дешифрируются CNT_SEC [5:0], CNT_MIN [5:0], CNT_HOUR [5:0]. Отсюда и три дешифратора. Эти три дешифратора работают параллельно и независимо друг от друга. Рисуете три квадратика и указываете с левой стороны их входы (CNT_SEC [5:0], CNT_MIN [5:0], CNT_HOUR [5:0]).

 

Выходами вашего модуля является регистры (6 четырехразрядных регистров) - это вы рисуете с правой стороны.

 

Первый дешифратор работает с кодами следующего диапазона: 0..59

 

Второй дешифратор работает с кодами следующего диапазона: 0..59

 

Третий дешифратор работает с кодами следующего диапазона: 0..23

 

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

 

В итоге получается у Вас дешифратор + выходные регистры, в которые записываются различные константы под управлением дешифратора.

 

Предлагаю Вам начать рисовать структуры, а я уже подправлю.

 

 

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо, но не совсем понятно мне с управляющими сигналами. Я знаю, что такое дешифратор и регистры, но не улавливаю вот именно связь выхода дешифратора (от 0 до 9 ?) с регистрами.

 

 

Дорогой друг! Здесь все очень даже просто.

То что описано в прикрепленном к посту коде есть ни что иное как обычные три дешифратора.

 

Как известно, дешифратор необходим для дешифрации кода. В вашем случае дешифрируются CNT_SEC [5:0], CNT_MIN [5:0], CNT_HOUR [5:0]. Отсюда и три дешифратора. Эти три дешифратора работают параллельно и независимо друг от друга. Рисуете три квадратика и указываете с левой стороны их входы (CNT_SEC [5:0], CNT_MIN [5:0], CNT_HOUR [5:0]).

 

Выходами вашего модуля является регистры (6 четырехразрядных регистров) - это вы рисуете с правой стороны.

 

Первый дешифратор работает с кодами следующего диапазона: 0..59

 

Второй дешифратор работает с кодами следующего диапазона: 0..59

 

Третий дешифратор работает с кодами следующего диапазона: 0..23

 

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

 

В итоге получается у Вас дешифратор + выходные регистры, в которые записываются различные константы под управлением дешифратора.

 

Предлагаю Вам начать рисовать структуры, а я уже подправлю.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вспомнилась фраза из Ералаша "Тут рыбы нет". Так вот и тут, в вашей схеме, нет регистров, а только логика. Т.е на входы подали воздействие и на выходе получили результат. И замените "<=" на "=".

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Дык это же bin->BCD, 3 курс университета..

Я, помнится, в то время, его на верилоге через деление описывал)

Интересно скормить синтезатору, наверняка можно и более компактно описать.

Ну, хотя бы вынести кусок в модуль, ведь секундный и минутный - одинаковые :wacko:

Изменено пользователем drozel

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Так вот и тут, в вашей схеме, нет регистров, а только логика.

Не путайте человека!!! Тут есть регистры.

 

output reg [3:0] CNT1,
output reg [3:0] CNT2,
output reg [3:0] CNT3,
output reg [3:0] CNT4,
output reg [3:0] CNT5,
output reg [3:0] CNT6
    );

 

Спасибо, но не совсем понятно мне с управляющими сигналами. Я знаю, что такое дешифратор и регистры, но не улавливаю вот именно связь выхода дешифратора (от 0 до 9 ?) с регистрами.

В зависимости от состояния входа дешифратора в выходной регистр записывается фиксированное значение.

Понятней стало?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А что же это? =)))))))))))))

Это возможность делать присвоения внутри блока "always".

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это возможность делать присвоения внутри блока "always".

 

Да уж. интересная формулировка=))) А ваши руки это не руки, а возможность нажимать на кнопки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да уж. интересная формулировка=))) А ваши руки это не руки, а возможность нажимать на кнопки.

не нравится формулировка - читайте спеки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Блин, регистры не регистры.

В коде это регистры, после синтеза регистров не будет, они сделаны для возможности присвоения в always, как сказал masics.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Блин, регистры не регистры.

В коде это регистры, после синтеза регистров не будет, они сделаны для возможности присвоения в always, как сказал masics.

 

Чем Вам "регистры не регистры" та мешают? Вопрос не в этом был... Объясните подробнее автору ...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...