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

 
 
> Нестандартный счетчик
rassigor
сообщение Dec 6 2005, 15:13
Сообщение #1





Группа: Новичок
Сообщений: 5
Регистрация: 6-12-05
Пользователь №: 11 895



помогите пожалуйста сделать(на плис XILINIX) для Лабораторной работы (препод совсем замучал) такую схему, чтобы на входе был сигнал CLK и лоад (разрешение загрузки если 1 то загружаем числу в SD) и 8 разрядная шина SD в которую грузим числа.
На выходе (out) необходимо получить следующее, импульс, длительность которого будет зависеть от входного числа, то есть если вошло число 8 то импульс длинный, вошло 2 -импульс короткий. Помогите хотя бы принцип накиньте
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
sazh
сообщение Dec 6 2005, 16:03
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804



module sd_interval (clk, load, sd, out_interval);


input clk;
input load; // интервал строба load больше или равен периода clk
input [3:0] sd;
output out_interval;// длительностью в целое число sd (исключая 0)

reg [3:0] ct;// счетчик
reg trigger_enable;// интервал, в котором разрешена работа счетчика
reg [1:0] shift_left_rg;

wire enable_load;

assign out_interval = trigger_enable;
/// схема формирования одиночного импульса enable_load длительностью в один такт clk
/// по переднему фронту сигнала load
always @ (posedge clk)
begin
shift_left_rg <= {shift_left_rg[0], load};//
end

assign enable_load = shift_left_rg[0] & ~shift_left_rg[1];
/////////////////////////////////////////////////////////////////////////////
always @ (posedge clk)
begin
if (enable_load == 1'b1)
ct <= sd; // по enable_load в счетчик загружаем число sd
else if (trigger_enable == 1'b1)
ct <= ct - 1'b1;// работаем на вычитание в интервале trigger_enable
end

always @ (posedge clk)
begin
if (enable_load == 1'b1)
trigger_enable <= 1'b1;// по enable_load разрешаем интервал работы счетчика
else if (ct == 4'd1)//когда счетчик досчитает до значения единица, запрещаем работу счетчика
trigger_enable <= 1'b0;
end

endmodule
Go to the top of the page
 
+Quote Post
rassigor
сообщение Dec 6 2005, 19:54
Сообщение #3





Группа: Новичок
Сообщений: 5
Регистрация: 6-12-05
Пользователь №: 11 895



Цитата(sazh @ Dec 6 2005, 19:03) *
module sd_interval (clk, load, sd, out_interval);


input clk;
input load; // интервал строба load больше или равен периода clk
input [3:0] sd;
output out_interval;// длительностью в целое число sd (исключая 0)

reg [3:0] ct;// счетчик
reg trigger_enable;// интервал, в котором разрешена работа счетчика
reg [1:0] shift_left_rg;

wire enable_load;

assign out_interval = trigger_enable;
/// схема формирования одиночного импульса enable_load длительностью в один такт clk
/// по переднему фронту сигнала load
always @ (posedge clk)
begin
shift_left_rg <= {shift_left_rg[0], load};//
end

assign enable_load = shift_left_rg[0] & ~shift_left_rg[1];
/////////////////////////////////////////////////////////////////////////////
always @ (posedge clk)
begin
if (enable_load == 1'b1)
ct <= sd; // по enable_load в счетчик загружаем число sd
else if (trigger_enable == 1'b1)
ct <= ct - 1'b1;// работаем на вычитание в интервале trigger_enable
end

always @ (posedge clk)
begin
if (enable_load == 1'b1)
trigger_enable <= 1'b1;// по enable_load разрешаем интервал работы счетчика
else if (ct == 4'd1)//когда счетчик досчитает до значения единица, запрещаем работу счетчика
trigger_enable <= 1'b0;
end

endmodule


Спасибо большое за такой способ решения, я не знаком с программированием там, мне задано было схемой нарисовать, вот щас накидал схему, посмотрите будет ли она работать(возможности проверить нет только через неделю)Load управляет загрузкой данных

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

Сообщение отредактировал rassigor - Dec 6 2005, 20:10
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 13th August 2025 - 16:51
Рейтинг@Mail.ru


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