sazh
Свой-
Постов
2 501 -
Зарегистрирован
-
Посещение
-
Победитель дней
2
Весь контент sazh
-
20 лет прошло. И все равно - кошечка. By Mike Stein, Paradigm Works module toggle_hard_sync ( input in_flag, in_clk, sys_clk, output sys_flag ); reg toggle = 1'b0; reg [2:0] hard_sync_rg = 3'd0; always @(posedge in_clk) begin if (in_flag) toggle <= ~toggle; end always @(posedge sys_clk) begin hard_sync_rg <= {hard_sync_rg[1:0], toggle}; end assign sys_flag = hard_sync_rg[2] ^ hard_sync_rg[1]; endmodule
-
Вы привели графический вариант, который отличается от вашего проекта rg_ch. А функционально Ваш проект - это д триггер, реализованный на д триггере со входом разрешения и xor в цепи обратной связи. Синтезатор его должен в д триггер превратить. И где тут борьба с метастабильностью. Добавьте еще триггер, будет как в старые добрые времена. Кстати хочу по VHDL проехаться. --signal tg_s : std_logic := '0'; --signal one_tic : std_logic := '0'; Давать указание симулятору - выход логики в ноль установить ? Он конечно проигнорировал, но ему по барабану, сигнал и сигнал. У меня получилось так. Разницы не увидел. module rg_ch ( input clk, change_a, change_b, output [1:0] rg_oa, rg_ob ); reg tg_sa = 1'b0; reg tg_sb = 1'b1; reg [1:0] rg_dff = 2'b10; wire one_tica = change_a ^ tg_sa, one_ticb = change_b ^ tg_sb; always @(posedge clk) begin if(one_tica) tg_sa <= change_a; if(one_ticb) tg_sb <= change_b; rg_dff <= {change_b, change_a}; end assign rg_oa = {tg_sb, tg_sa}, rg_ob = rg_dff; endmodule
-
Хотелось бы увидеть картинку для моп структуры. Ибо ттл структура для плис не актуальна. Помниться на 133 серии 5 вольтовой ттл логике на висячем входе был уровень 1.3 В и уверенно воспринимался как лог.1
-
Может статься, эти примитивы только для схематика предназначены. Попробуйте примитив BUFG BUFG_inst ( .O(O), // Clock buffer output .I(I) // Clock buffer input втянуть. Такие примитивы должны подхватываться без всяких путей. Я могу понять про 5титысячник. Я не могу понять про Foundation. Найдите какой нибудь старенький айс, поддерживающий это семейство. С синтезатором, который в должной мере поддерживает язык. По мне, так надо оставить свои наработки в схематике только для поддержки проектов, которые были сделаны в схематике, дорабатывать только в схематике. А если головным модулем проекта является текст, так и все модули пишите в тексте без опоры на примитивы. Иначе о какой переносимости ваших проектов Вы говорите. module ct_div #( parameter xtal_clk = 33_333_333, baud = 115_200 ) ( input clk, input s_rst_n, output enable_wr ); ///////////////// $clog2 function integer clogb2 (input [31:0] value); begin value = value - 1; for (clogb2 = 0; value > 0; clogb2 = clogb2 + 1) value = value >> 1; end endfunction ///////////////// localparam clk_div = xtal_clk / baud, ct_width = clogb2(clk_div); //ct_width = $clog2(clk_div) reg [ct_width-1:0] ct = {ct_width{1'b0}}; reg enable_wr_rg = 1'b0; always @(posedge clk) begin if (s_rst_n == 1'b0) ct <= {ct_width{1'b0}}; else if (ct == clk_div-1) ct <= {ct_width{1'b0}}; else ct <= ct + 1'b1; enable_wr_rg <= (ct == clk_div-1); end assign enable_wr = enable_wr_rg; endmodule
-
module ct_cb8ce // verilog 2001 ( input c, input clr, input ce, output out_c ); reg [7:0] counter = 8'd0; always @(posedge c or posedge clr) begin if (clr) counter <= 8'd0; else if (ce) counter <= counter + 1'b1; end assign out_c = counter [7]; endmodule
-
Никто не собирался уделывать VHDL. Если в описании Вы видите, как это описание ложиться на базовые примитивы того или иного семейства, зачем Вам VHDL, если все можно изящно описать, используя всего два типа reg wire Печалька в другом. Искусству схемотехники уже никто не учит.
-
Правильно мыслите. Какие пологие фронты, если в линии +-5В, а отсекаются при приеме на уровне +-3В. Покритикую проект. Если позволите. Проект не полностью параметризирован (разрядность счетчиков к параметрам не привязана). Загружать счетчики надо (значением - 1), ибо счетчик крутится от 0 до (2**n) -1 и если вдруг загрузите 2**n, загрузите нули. По мне, так в автомате не хватает еще одного состояния. начинаете со старта. Заканчивать надо на стопе (если там будет 0 - это ошибка кадрирования). Мне понравилась реализация 30 тилетней давности в ДВК3. По перепаду из 1 в 0 добегаем до середины стартового бита, и если добежали, от этой середины просто нарезаем биты , в том числе стоп. За 10, 11 бит просто невозможно уход от середины бита в следующий бит. Простой тестовый пример. Если интересно. mail_out_2021.zip
-
Плясать надо не от библиотек, а от семейства fpga и его структуры. Как раньше говорили, если семейство на базе статической ячейки памяти, регистровая структура инициализируется нулями, что можно использовать для начальной установки регистров в любое значение. Другое дело что (например Альтера) ранние синтезаторы не позволяли это делать простым присваиванием в теле модуля. А теперь могут. Суть от времени не меняется. `timescale 1 ns / 1 ps `define ena_90 module initial_set #( parameter set = 8'd8 ) ( input clk, input [7:0] data_in, input ena, output [7:0] data_out ); `ifdef ena_90 reg [7:0] dffe_rg = 8'd0; assign data_out = dffe_rg ^ set; always @ (posedge clk) begin if (ena) dffe_rg <= data_in ^ set; end `else reg [7:0] dffe_rg = 8'd8; assign data_out = dffe_rg; always @ (posedge clk) begin if (ena) dffe_rg <= data_in; end `endif endmodule
-
`timescale 1 ns / 1 ps module ct ( input clk, output [1:0] counter ); reg [1:0] counter_rg = 2'b00; always @(posedge clk) begin counter_rg <= counter_rg + 1'b1; end assign counter = counter_rg; endmodule
-
JTAG cyclone 5
sazh ответил rash230691 тема в Работаем с ПЛИС, области применения, выбор
Я это иначе прочитал. Это о случае, когда если TDO использует VCCPD = 2,5, а внешнее устройство (usb бластер) запитан от 3.3В,может быть ток утечки в входном буфере TDI интерфейсного устройства. Рекомендуют внеший резистор. Здесь не рассматривается случай подтяжки пинов tms, tdi jtag плис к 3.3В, если VCCPD = 2,5. -
Интерфейс Манчестер
sazh ответил momotova тема в Языки проектирования на ПЛИС (FPGA)
Если ГОСТ Р 52070 2003 decoder_encoder_1553.zip -
О философии HDL-дизайнера
sazh ответил Мур тема в Языки проектирования на ПЛИС (FPGA)
Интересно, где по Вашему отец Иосиф свои знания получал? -
О философии HDL-дизайнера
sazh ответил Мур тема в Языки проектирования на ПЛИС (FPGA)
А к какому Госту, по Вашему мнению, можно привязать проект на ПЛИС, До сих пор все отбиваются от понятия программный продукт. К сожалению, нет. -
(DDR контроллер памяти, самые медленные гигабитные передатчики, коммерческое исполнение). (фирма продает дефектоскопы для АЭС). А отвечать за такой выбор кто будет.
-
А зачем вам ловить переполнения. Расширяйте разрядную сетку. module sum_signed_unsigned ( input add, input [3:0] a, b, // unsigned input [3:0] aa, bb, // signed output [4:0] s, // unsigned output [4:0] ss // signed ); assign s = add ? {1'b0, a} + {1'b0, b} : {1'b0, a} - {1'b0, b}; assign ss = add ? {aa[3], aa} + {bb[3], bb} : {aa[3], aa} - {bb[3], bb}; endmodule
-
Если нет расширения разрядной сетки. Возьмем базовый примитив сумматора. Как известно у него разрядность суммы такая же как и разрядность слагаемых. Но у него при этом есть возможность активизировать выход или переноса, или переполнения. В зависимости от того как Вы воспринимаете входные коды. А если нет расширения разрядной сетки, значит Вы не получите правильный результат во всем диапазоне входных кодов.
-
Железо про числа ничего не знает. Оно работает с кодами, которые в соответствии с задчей можно представить как числа со знаком или без знака. Если Вы сами заботитесь о расширении разрядной сетки должным образом, то полученный код будет соответствовать Вашим представлением. Можно конечно воспользоваться указаниями синтезатору. Но нужно четко при этом понимать, что должно получиться.
-
Последняя версия Квартуса, которая поддерживает семейство FLEX10KE - 9.0 SP2. Циклон 2 тоже, может пригодиться. Языки описания аппаратуры тоже прилично поддерживает. Моделсим тоже прилагается.
-
По схеме у Вас RS триггер нарисован. И используется явно в противоречии с таблицей истинности. Примитив dff еще никто не отменял. Поставьте 9 Квартус. Его будет достаточно под такое творчество. Если нужно реализовать на задержках из строба короткий импульс, окунуться так сказать в прошлое, такое вот предлагали. lcell_xor.v
-
Как выбрать ПЛИС?
sazh ответил Conv тема в Работаем с ПЛИС, области применения, выбор
Ни разу не просматривается польза от постановки задач такого рода. (Как по деньгам, так и по конструированию) Переход на все новое надо осуществлять за счет заказчика. Поэтому купите EZ KIT по новее с пакетом разработки под любимую фирму и все. -
Сейчас увидел строку if (HCLK'event and HCLK = '0') then if WR='0' AND CSTx(0)='0' AND CS2Tx(0)='1' then WR_ENx(0) <='1'; и понял, что ввел Вас в заблуждение. Вы формируете сигнал ena по переходу из 1 в 0 сигнала WRn. Тогда с записью у Вас должно быть все нормально. WR='0' в условии наверно лишнее Что касается чтения, наверно нет надобности его стробировать клоком, чистое мультиплексирование по адресу process (X50) begin if rising_edge(X50) then if (AD(19 DOWNTO 18) = "00") then DATA_OUT<=DATA_OUT0; end if;
-
Мне кажется, Вы перемудрили с селектором адреса, в особенности в цикле записи. Если я правильно понял, активные уровни WR,RD - 0 Определитесь с длительностью этих циклов (записи, чтения) в системных тактах процессора (по умолчанию там обычно максимальный) По переходу из 0 в 1 сигнала WR Вы привязываетесь к клокам 50, 100, формируя сигналы ENA Мне кажется тут Вы и теряете данные (по записи, а не по чтению) Наверно надо в Вашем случае по переходу из 0 в 1 сигнала WR в интервале CS фиксировать в регистрах значения адреса и данных на шине процессора в цикле записи, а не просто транслировать со входа на выход модуля. Ну а длительность цикла чтения зависит только от Ваших задержек TRANS<='0' WHEN CS='0' AND (RD='0' OR WR='0') ELSE '1'; зачем он в цикле чтения
-
Цикл чтения формирует сам процессор, и временные расстановки участвующих в них сигналах должны гарантировать снятие данных. Можно замутить сигнал WR в T<=RD OR CS; Разводка кристалла не должна влиять, ибо по идее процессор считывает данные и только потом снимает CS, RD
-
При продаже 100 приборов в год, стоимостью 68 000 евро каждый каждая буква на счету.
-
TCK к gnd тянут. Даже если есть внутри, внешние видимо не мешают. Ибо в цепочке могут быть и другие кристаллы без внутренней подтяжки. http://www.altera.com/literature/hb/max2/max2_mii51013.pdf