Jump to content

    

axalay

Свой
  • Content Count

    386
  • Joined

  • Last visited

Community Reputation

0 Обычный

About axalay

  • Rank
    Местный
  • Birthday 09/27/1977

Контакты

  • Сайт
    Array
  • ICQ
    Array

Информация

  • Город
    Array

Recent Profile Visitors

2177 profile views
  1. вот ща у многих бомбанет :)))) Вот это вы подкинули на вентилятор - ай да молодца! Сам на аллегро если че
  2. если колбасит только один бит и трассы норм выровнены, то возможно непропай. У меня подобное было
  3. Нужно смотреть как выровнены линии в шинах по длине, ну а далее задержки
  4. Вам же тут выше правильно писали - важнее смотреть на рекомендации по разводке памяти самого контроллера. а не памяти. Есть контроллеры, которые вообще флайбай не потдерживают. Я разводил и ддр3 и ддр4. Если вопросы-пишите
  5. есть I2C свичи. И там даже если какой то канал выгорел, можно перестать к нему обращаться. Смотрите у техаса например
  6. Поднимем тему? Интересно решение. Сам в силовой электронике не силен Вот что то отдаленно похожее есть у линеар, но не подходит http://cds.linear.com/docs/en/datasheet/3886fd.pdf
  7. Просматривал форум и наткнулся. Одному товарищу как раз интересен второй пунт - регулируемый выход с постоянным током. К чему то автор вопроса пришел? Вообще даже интересует красивое решение, если даже 4 - 8 фиксировнных напряжений в диапазоне от 3.3 до 30 вольт. Ток вроде товарищу надо около 30 ампер
  8. вот проект. Нужен как бы десериалайзер. Цель - перевод сигналов в отрицательную логику. AC-coupling, поэтому каждый второй бит выкидывается (проще,чем 8b/10b). С латтисом работаю раз в 2 пятилетки, поэтому любую критику выслушаю skl_new_cpld.rar
  9. Микруха LCMXO3L-640E-6MG121I, В даташите написано про LVDS33. А в софте не вижу. Хочу запитать все порты одним питанием 3.3, поэтому хотел бы LVDS33. Чую, что будет работать, если укажу, что 25, а подам 3.3 вольта.... только нет права на ошибку. И еще : Timing Report Summary -------------- -------------------------------------------------------------------------------- Constraint | Constraint| Actual|Levels -------------------------------------------------------------------------------- | | | create_clock -period 5.000000 -name | | | clk0 [get_nets Clock200] | 200.000 MHz| 720.461 MHz| 1 | | | -------------------------------------------------------------------------------- Я установил IDDRXE. А по этому таймингрепорту я просто офигеваю - это такая шустрая микруха? :) В доках написано, что 400 МГц максимум, и то если LVDS25 И еще - как избавиться от таких варнингов WARNING - Skipping pad insertion on Clock_p due to black_box_pad_pin attribute. WARNING - Skipping pad insertion on Clock_n due to black_box_pad_pin attribute. WARNING - Skipping pad insertion on Frame_p due to black_box_pad_pin attribute. WARNING - Skipping pad insertion on Frame_n due to black_box_pad_pin attribute. WARNING - Skipping pad insertion on Data_p[4] due to black_box_pad_pin attribute. WARNING - Skipping pad insertion on Data_p[3] due to black_box_pad_pin attribute. WARNING - Skipping pad insertion on Data_p[2] due to black_box_pad_pin attribute. WARNING - Skipping pad insertion on Data_p[1] due to black_box_pad_pin attribute. WARNING - Skipping pad insertion on Data_p[0] due to black_box_pad_pin attribute. WARNING - Skipping pad insertion on Data_n[4] due to black_box_pad_pin attribute. WARNING - Skipping pad insertion on Data_n[3] due to black_box_pad_pin attribute. WARNING - Skipping pad insertion on Data_n[2] due to black_box_pad_pin attribute. WARNING - Skipping pad insertion on Data_n[1] due to black_box_pad_pin attribute. WARNING - Skipping pad insertion on Data_n[0] due to black_box_pad_pin attribute.
  10. вот другая реализация. Это простые делители - первый итерационный, а этот нет // Fast Array Divider 8 bit to 4 bit module fast_array_divider (a_in, d_in, q_out, r_out); input [7:0] a_in; input [3:0] d_in; output [7:0] q_out; wire [7:0] q_out; output [3:0] r_out; wire [3:0] r_out; wire [12:1] a; wire [4:1] d; wire [8:1] q; wire [8:5] r; wire c_0_3, c_0_2, c_0_1, c_0_0; wire s_0_3, s_0_2, s_0_1, s_0_0; wire q1_inv; restoring_array_divider array_0_0 ( a[2], d[1], c_0_1, q1_inv, c_0_0, s_0_0); restoring_array_divider array_0_1 ( a[3], d[2], c_0_2, q1_inv, c_0_1, s_0_1); restoring_array_divider array_0_2 ( a[4], d[3], c_0_3, q1_inv, c_0_2, s_0_2); restoring_array_divider array_0_3 ( a[5], d[4], 1'b0, q1_inv, c_0_3, s_0_3); assign q[1] = ( a[1] | !c_0_0 ); assign q1_inv=!q[1]; wire c_1_3, c_1_2, c_1_1, c_1_0; wire s_1_3, s_1_2, s_1_1, s_1_0; wire q2_inv; restoring_array_divider array_1_0 ( s_0_1, d[1], c_1_1, q2_inv, c_1_0, s_1_0); restoring_array_divider array_1_1 ( s_0_2, d[2], c_1_2, q2_inv, c_1_1, s_1_1); restoring_array_divider array_1_2 ( s_0_3, d[3], c_1_3, q2_inv, c_1_2, s_1_2); restoring_array_divider array_1_3 ( a[6], d[4], 1'b0, q2_inv, c_1_3, s_1_3); assign q[2] = ( s_0_0 | !c_1_0 ); assign q2_inv=!q[2]; wire c_2_3, c_2_2, c_2_1, c_2_0; wire s_2_3, s_2_2, s_2_1, s_2_0; wire q3_inv; restoring_array_divider array_2_0 ( s_1_1, d[1], c_2_1, q3_inv, c_2_0, s_2_0); restoring_array_divider array_2_1 ( s_1_2, d[2], c_2_2, q3_inv, c_2_1, s_2_1); restoring_array_divider array_2_2 ( s_1_3, d[3], c_2_3, q3_inv, c_2_2, s_2_2); restoring_array_divider array_2_3 ( a[7], d[4], 1'b0, q3_inv, c_2_3, s_2_3); assign q[3] = ( s_1_0 | !c_2_0 ); assign q3_inv=!q[3]; wire c_3_3, c_3_2, c_3_1, c_3_0; wire s_3_3, s_3_2, s_3_1, s_3_0; wire q4_inv; restoring_array_divider array_3_0 ( s_2_1, d[1], c_3_1, q4_inv, c_3_0, s_3_0); restoring_array_divider array_3_1 ( s_2_2, d[2], c_3_2, q4_inv, c_3_1, s_3_1); restoring_array_divider array_3_2 ( s_2_3, d[3], c_3_3, q4_inv, c_3_2, s_3_2); restoring_array_divider array_3_3 ( a[8], d[4], 1'b0, q4_inv, c_3_3, s_3_3); assign q[4] = ( s_2_0 | !c_3_0 ); assign q4_inv=!q[4]; wire c_4_3, c_4_2, c_4_1, c_4_0; wire s_4_3, s_4_2, s_4_1, s_4_0; wire q5_inv; restoring_array_divider array_4_0 ( s_3_1, d[1], c_4_1, q5_inv, c_4_0, s_4_0); restoring_array_divider array_4_1 ( s_3_2, d[2], c_4_2, q5_inv, c_4_1, s_4_1); restoring_array_divider array_4_2 ( s_3_3, d[3], c_4_3, q5_inv, c_4_2, s_4_2); restoring_array_divider array_4_3 ( a[9], d[4], 1'b0, q5_inv, c_4_3, s_4_3); assign q[5] = ( s_3_0 | !c_4_0 ); assign q5_inv=!q[5]; wire c_5_3, c_5_2, c_5_1, c_5_0; wire s_5_3, s_5_2, s_5_1, s_5_0; wire q6_inv; restoring_array_divider array_5_0 ( s_4_1, d[1], c_5_1, q6_inv, c_5_0, s_5_0); restoring_array_divider array_5_1 ( s_4_2, d[2], c_5_2, q6_inv, c_5_1, s_5_1); restoring_array_divider array_5_2 ( s_4_3, d[3], c_5_3, q6_inv, c_5_2, s_5_2); restoring_array_divider array_5_3 ( a[10], d[4], 1'b0, q6_inv, c_5_3, s_5_3); assign q[6] = ( s_4_0 | !c_5_0 ); assign q6_inv=!q[6]; wire c_6_3, c_6_2, c_6_1, c_6_0; wire s_6_3, s_6_2, s_6_1, s_6_0; wire q7_inv; restoring_array_divider array_6_0 ( s_5_1, d[1], c_6_1, q7_inv, c_6_0, s_6_0); restoring_array_divider array_6_1 ( s_5_2, d[2], c_6_2, q7_inv, c_6_1, s_6_1); restoring_array_divider array_6_2 ( s_5_3, d[3], c_6_3, q7_inv, c_6_2, s_6_2); restoring_array_divider array_6_3 ( a[11], d[4], 1'b0, q7_inv, c_6_3, s_6_3); assign q[7] = ( s_5_0 | !c_6_0 ); assign q7_inv=!q[7]; wire c_7_3, c_7_2, c_7_1, c_7_0; wire s_7_3, s_7_2, s_7_1, s_7_0; wire q8_inv; restoring_array_divider array_7_0 ( s_6_1, d[1], c_7_1, q8_inv, c_7_0, s_7_0); restoring_array_divider array_7_1 ( s_6_2, d[2], c_7_2, q8_inv, c_7_1, s_7_1); restoring_array_divider array_7_2 ( s_6_3, d[3], c_7_3, q8_inv, c_7_2, s_7_2); restoring_array_divider array_7_3 ( a[12], d[4], 1'b0, q8_inv, c_7_3, s_7_3); assign q[8] = ( s_6_0 | !c_7_0 ); assign q8_inv=!q[8]; assign r[8:5]={s_7_3, s_7_2, s_7_1, s_7_0}; assign a[12:1]={a_in[0], a_in[1], a_in[2], a_in[3], a_in[4], a_in[5], a_in[6], a_in[7], 4'b0000}; assign d[4:1]={d_in[0], d_in[1], d_in[2], d_in[3]}; assign q_out[7:0]={q[1] ,q[2], q[3], q[4], q[5], q[6], q[7], q[8]}; assign r_out[3:0]={r[5], r[6], r[7], r[8]}; endmodule //fast_array_divider
  11. может кому будет нужно `timescale 1ns / 1ps // module divider # ( parameter WIDTH_DIVIDENT = 27, parameter WIDTH_DIVIDER = 9 ) ( // global input Clock, // input input DivIn, input [WIDTH_DIVIDENT-1 : 0] Divident, input [WIDTH_DIVIDER-1 : 0] Divider, // output output wire DivOut, output wire [WIDTH_DIVIDENT-1 : 0] Result, output wire [WIDTH_DIVIDER-1 : 0] Fractional, // debug output wire Test ); // wire [0 : 0] Comp [WIDTH_DIVIDENT-1 : 0]; wire [WIDTH_DIVIDER-1 : 0] CarryTemp [WIDTH_DIVIDENT-1 : 0]; // sift registers reg [0 : 0] DivTemp [WIDTH_DIVIDENT-1 : 0]; reg [WIDTH_DIVIDENT-1 : 0] ResultTemp [WIDTH_DIVIDENT-1 : 0]; reg [WIDTH_DIVIDENT+WIDTH_DIVIDER-1 : 0] DividentTemp [WIDTH_DIVIDENT-1 : 0]; reg [WIDTH_DIVIDER-1 : 0] DividerTemp [WIDTH_DIVIDENT-1 : 0]; // first always @(posedge Clock) begin DivTemp[0][0 : 0] = DivIn; ResultTemp[0][WIDTH_DIVIDENT-1 : 0] = (Comp[0]) ? 8'd1 : 8'd0; DividentTemp[0][WIDTH_DIVIDENT+WIDTH_DIVIDER-2 : 0] = {{(WIDTH_DIVIDER-1){1'b0}}, Divident[WIDTH_DIVIDENT-1 : 0]}; DividerTemp[0][WIDTH_DIVIDER-1 : 0] = Divider[WIDTH_DIVIDER-1 : 0]; end //always // next all genvar i; generate for (i=1; i<WIDTH_DIVIDENT; i=i+1) begin: shift always @(posedge Clock) begin DivTemp[0 : 0] = DivTemp[i-1][0 : 0]; ResultTemp[WIDTH_DIVIDENT-1 : 0] = {(ResultTemp[i-1][WIDTH_DIVIDENT-2 : 0]), ((Comp) ? 1'b1 : 1'b0)}; DividentTemp[WIDTH_DIVIDENT+WIDTH_DIVIDER-2 : 0] = {CarryTemp[i-1][WIDTH_DIVIDER-2 : 0], DividentTemp[i-1][WIDTH_DIVIDENT-2 : 0], 1'b0}; DividerTemp[WIDTH_DIVIDER-1 : 0] = DividerTemp[i-1][WIDTH_DIVIDER-1 : 0]; end //always end endgenerate // calculate genvar j; generate for (j=0; j<WIDTH_DIVIDENT; j=j+1) begin: calc assign Comp[j][0 : 0] = (DividentTemp[j][WIDTH_DIVIDENT+WIDTH_DIVIDER-2 :WIDTH_DIVIDENT-1] >= DividerTemp[j][WIDTH_DIVIDER-1 : 0]) ? 1'b1 : 1'b0; assign CarryTemp[j][WIDTH_DIVIDER-1 : 0] = (Comp[j]) ? (DividentTemp[j][WIDTH_DIVIDENT+WIDTH_DIVIDER-2 :WIDTH_DIVIDENT-1] - DividerTemp[j][WIDTH_DIVIDER-1 : 0]) : DividentTemp[j][WIDTH_DIVIDENT+WIDTH_DIVIDER-2 :WIDTH_DIVIDENT-1]; end endgenerate // fractional reg [WIDTH_DIVIDER-1 : 0] FractionalReg; always @(posedge Clock) FractionalReg[WIDTH_DIVIDER-1 : 0] = CarryTemp[WIDTH_DIVIDENT-1]; // result valid reg DivReg; always @(posedge Clock) DivReg = DivTemp[WIDTH_DIVIDENT-1][0 : 0]; // output assign Result[WIDTH_DIVIDENT-1 : 0] = ResultTemp[WIDTH_DIVIDENT-1]; assign Fractional[WIDTH_DIVIDER-1 : 0] = FractionalReg[WIDTH_DIVIDER-1 : 0]; assign DivOut = DivReg; // debug assign Test = 1'b0; endmodule //divider
  12. он к сожалению на систем верилоге.... а я в айсе работаю. НА установку симплифая пока не решился