Jump to content

    

dimka76

Свой
  • Content Count

    1182
  • Joined

  • Last visited

Community Reputation

0 Обычный

About dimka76

  • Rank
    developer
  • Birthday 10/03/1976

Контакты

  • Сайт
    Array
  • ICQ
    Array

Информация

  • Город
    Array

Recent Profile Visitors

15416 profile views
  1. Я эту фразу вообще не правильно сформулировал. Прошу на нее не обращать внимания. --------------------------------------------------- Я хотел сказать, что Cortex-R тоже из серии МК для безопасных систем, а не то что TriCore из серии Кортексов.
  2. Да я понимаю, что не ARM, я про область применения. Ведь Cortex-Rx, так же предназначен для систем критичных к безопасности.
  3. Я имел ввиду не из серии микроконтроллеров для безопасных систем.
  4. А что в них хорошего ? Например по сравнению с Cortex-Mx.
  5. Ужасно смотриться. И по оформлению схемы - нечитаемая каша. И по схемотехнике жуть какая-та. С3 перевернут. С остальными полярными конденсаторами тоже вопрос. Что вы хотели изобразить на транзисторе Q5 ? R2 зачем нужен ?
  6. Такое ощущение, что в вариантах 6 и 7 терминология перепутана. У мультиплексора входы должны быть 6*[3..0], а не выходы. А у демультиплексора наоборот.
  7. Спасибо. Расскажите, если не сложно. Но ваше замечание заставило меня еще раз внимательно вглядеться в код моего тестбенча. И таким образом обнаружилась ошибка, которая приводила к сбоям. always #10 clock_50 <= ~ clock_50; //creating clk Т.е. частота получается 50 МГц и на выходе PLL симулятор выдавал 250 МГц. А должно быть на входе 25, на выходе 125 МГц. Да и временной анализ мне показывал, что достижимая частота в моем проекте 170 МГц. Итак, все глюки из-за неправильной входной частоты. Исправил и поведение исправилось.
  8. Делаю симуляцию в указанной выше связки. Симуляцию выполняю в режиме Post-Route Gate-Level + Timing. Симулирую проект квадратурного декодера на verilog. Вот код module quad( input wire clk, input wire quadA, input wire quadB, input wire quadZ, input wire [31:0] val, input wire wr_en, input wire i_rst, output reg [31:0] cnt, output reg [31:0] zMark ); reg [2:0] quadA_delayed, quadB_delayed, quadZ_delayed; always @(posedge clk or posedge i_rst) begin if(i_rst) begin quadA_delayed <= 3'd0; quadB_delayed <= 3'd0; quadZ_delayed <= 3'd0; end else begin quadA_delayed <= {quadA_delayed[1:0], quadA}; quadB_delayed <= {quadB_delayed[1:0], quadB}; quadZ_delayed <= {quadZ_delayed[1:0], quadZ}; end end reg count_enable; reg count_direction; reg z_pulse; always @(posedge clk) begin count_direction <= quadA_delayed[1] ^ quadB_delayed[2]; count_enable <= quadA_delayed[1] ^ quadA_delayed[2] ^ quadB_delayed[1] ^ quadB_delayed[2]; z_pulse <= ~quadZ_delayed[2] & quadZ_delayed[1]; end always @(posedge clk or posedge i_rst) begin if(i_rst) begin cnt <= 32'd0; zMark <= 32'd0; end else begin if(wr_en) cnt <= val; else begin if(count_enable) begin if (count_direction) cnt <= cnt + 32'd1; else cnt <= cnt - 32'd1; end if(z_pulse) zMark <= cnt; end end end endmodule Кот тест бенча // TOOL: vlog2tf // DATE: Tue Jun 25 11:42:01 2019 // TITLE: Lattice Semiconductor Corporation // MODULE: top_level // DESIGN: top_level // FILENAME: qdecoder_tf.v // PROJECT: Unknown // VERSION: 2.0 // This file is auto generated by the Diamond `timescale 1 ns / 1 ns // Define Module for Test Fixture module qdec_sim_tf(); // Inputs reg clock_50; reg wrn; reg rdn; reg rst; reg [3:0] addr; reg qA1, qB1, qA2, qB2, qA3, qB3, qZ1, qZ2, qZ3; // Outputs wire led_2; wire led_3; wire led_4; // Bidirs reg [15:0] quad_io; wire [15:0] val_io; // Instantiate the UUT // Please check and add your parameters manually top_level UUT ( .clock_50(clock_50), .rst(rst), .led_2(led_2), .led_3(led_3), .led_4(led_4), .wrn(wrn), .rdn(rdn), .quad_io(val_io), .addres(addr), .qA1(qB1), .qB1(qA1), .qZ1(qZ1), .qA2(qA2), .qB2(qB2), .qZ2(qZ2), .qA3(qA3), .qB3(qB3), .qZ3(qZ3) ); // Initialize Inputs // You can add your stimulus here initial begin clock_50 = 0; wrn = 1; rdn = 1; quad_io = 0; rst = 0; qA1 = 0; qB1 = 0; qA2 = 0; qB2 = 0; qA3 = 0; qB3 = 0; qZ1 = 0; qZ2 = 0; qZ3 = 0; end assign val_io = (wrn == 0) ? quad_io : 16'bZ; always #10 clock_50 <= ~ clock_50; //creating clk /**/ always begin #3500 addr = 0; #50 rdn = 0; #40 rdn = 1; #1 addr = 1; #50 rdn = 0; #40 rdn = 1; #3500 addr = 6; #50 rdn = 0; #40 rdn = 1; #1 addr = 7; #50 rdn = 0; #40 rdn = 1; end always begin #2000 qA1 = 1; #2000 qB1 = 1; #2000 qA1 = 0; #2000 qB1 = 0; end always begin #80000 qZ1 = 1; #2000 qZ1 = 0; end initial begin #2000 rst = 1; #50 rst = 0; #150 rst = 1; #50 rst = 0; #1350 quad_io = 100; #1020 addr = 0; #180 wrn = 0; #30 wrn = 1; #20 addr = 1; #5 quad_io = 670; #30 wrn = 0; #30 wrn = 1; #1350 quad_io = 200; #1020 addr = 0; #180 wrn = 0; #30 wrn = 1; #20 addr = 1; #5 quad_io = 170; #30 wrn = 0; #30 wrn = 1; #1350 quad_io = 55; #1020 addr = 0; #180 wrn = 0; #30 wrn = 1; #20 addr = 1; #30 wrn = 0; #30 wrn = 1; #1350 quad_io = 03; #1020 addr = 0; #180 wrn = 0; #30 wrn = 1; #20 addr = 1; #5 quad_io = 60000; #30 wrn = 0; #30 wrn = 1; end endmodule // top_level_tf Если счет импульсов идет в сторону увеличения значения счетчика, то все симулируется корректно. Если в обратно, то появляются какие-то сбои.Счетчик перепрыгивает значения. Это ошибки в коде или глюк симулятора ?
  9. Несколько не по теме, но хочется поинтересоваться. А почему вы все время на Aliexpress ориентируетесь ? Наши российские магазины также доставляют товары в любую точку России. И многие их них работают с Почтой России, которая есть в любой деревне. Я понимаю, что у китайцев выходит дешевле и за доставку платить не надо. Но у известных и проверенных поставщиков покупать наверное надежнее. И торгуют наши компонентами от известных мировых производителей, а не непонятными деталями, непонятно кем произведенными.
  10. А может купить готовый быстры АЦП в пределах 200-300 рублей в розницу, например ADC08060 ?
  11. Через терминал по Ethernet. Такая удаленная консоль получается.
  12. Да, все так.