Сортировка пузырьком на Verilog.

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Tucsonson
Родился
Сообщения: 14
Зарегистрирован: Сб фев 25, 2012 20:49:51

Сортировка пузырьком на Verilog.

Сообщение Tucsonson »

Всех приветствую!

Я новичок в Verilog, тут решил сделать сортировку пузырьком на этом языке. Т.к. опыта большого у меня нет, прошу покритиковать мой код в плане хардверной реализации. Можно ли сделать его проще? Меня настораживает большое кол-во конструкций if. Ввиду отсутствия возможности использования for, как сделать по-другому, не знаю.

Суть кода: есть 3х разрадный сигнал data_i, по которому в память записываются 8 чисел. Затем эти числа сортируются и так же последовательно выводятся по 3х разрядному проводу data_o. Сигнал en_i разрешает все действо. Итак, код:

Код: Выделить всё

module my_sort(
					input wire clk,
					input wire en_i,
					input wire rst_i,
					input wire [2:0] data_i,
					output reg [2:0] data_o
					//output reg [3:0]  i, j, p
);

integer temp, i, j, p;

reg [2:0] mem [7:0];

	always @ (posedge clk)
	begin
		if(rst_i)
		begin
			data_o<=0;
			i<=0;
			j<=0;
			p<=0;
		end
		else 
		begin
			if(en_i)
			begin
				if(i<=7)
				begin
					mem[i]<=data_i;
					i=i+1;
					j<=0;
					p<=0;
				end
				else
				begin
					if((mem[j]>mem[j+1])&&(j<=7))
					begin
						temp=mem[j+1];
						mem[j+1]=mem[j];
						mem[j]=temp;
						j<=0;
					end
					else
					begin
						j<=j+1;
						if(j>7)
						begin
							data_o<=mem[p];
							p=p+1;
						end
					end				
				end
			end
		end
	end


endmodule
Всем заранее спасибо за критику и советы.
Реклама
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»