Jump to content

    

evgenz

Участник
  • Content Count

    20
  • Joined

  • Last visited

Community Reputation

0 Обычный

About evgenz

  • Rank
    Участник
  1. по двигателю известно что Напряжение питания: номинальное, В 24 * максимально допустимое, В 60 * Ток: максимальный, управления, не более, А 32 * номинальный, А 7,5 холостого хода, не более, А 0,5 требование к ШИМ Сопротивление якоря, Ом 1,0 Индуктивность цепи якоря, мГн 0,8 -1,2 Напряжение трогания, не более, В 2,5 *
  2. я об этом тоже так думал просто не понятно в датешит там показывают что на сигнал HEN подается просто напряжение, а на IN- подается ШИМ просто по этой микрухе я еще один материал нашел там тоже на HEN подается напряжение а на IN+ и IN- формируют ШИМ что и смущает все это. А на этом рисунке как вы говорите предлагают на HEN подать ШИМ а один из нижних ключей держать постоянно открытым, это нормально ???? (я просто не силен в аналоговой части можно сказать это первое за что заставили взяться...) транзисторы не будет греться??? Class_D_Audio_II_Evaluation_Board__AN9525_.pdf
  3. Народ помогите разобраться с одной из микросхем HIP4080\HIP4081. Мне нужно управлять двигателем постоянного тока (32 А) т.е. с начало крутить его в одну сторону а потом в другую. А datasheet на эти микросхемы не сказано как менять направленность т.е. каким сигналом с начало одну диаганаль открываем а потом другую. Там просто показано куда ШИМ подавать и все.. Я даже в микрокап промоделировал ни чеого всеровну не понятно hip4081a.pdf hip4080a.pdf
  4. Народ помогите разобраться с одной из микросхем HIP4080\HIP4081. Мне нужно управлять двигателем постоянного тока (32 А) т.е. с начало крутить его в одну сторону а потом в другую. А datasheet на эти микросхемы не сказано как менять направленность т.е. каким сигналом с начало одну диаганаль открываем а потом другую. Там просто показано куда ШИМ подавать и все.. hip4080a.pdf hip4081a.pdf
  5. по поводу комутатора я его давно разбил, было вот так DATA_OUT10<="00000" & Q_SIGREAD WHEN AR1(14 DOWNTO 0)="000000000000100" ELSE "00000" & STIME WHEN AR1(14 DOWNTO 0)="000000000001000" ELSE DATA_FFT; DATA_OUT20 <= "00000" & STIMERD when AR2(9 downto 0)=ADDR_STIMERD else DATA_CORE; DATA_OUT<=DATA_OUT0 WHEN AD(19 DOWNTO 18)="00" ELSE DATA_OUT1 WHEN AD(19 DOWNTO 18)="01" ELSE X"00000 а сделал стало вот так, если я правильно понимаю process (X50) begin if(rising_edge(X50)) then if(AR1(14 DOWNTO 0)="000000000000100") then DATA_OUT10 <= "00000" & Q_SIGREAD; end if; if(AR1(14 DOWNTO 0)="000000000001000") then DATA_OUT10 <= "00000" & STIME; end if; if(AR1(14 DOWNTO 0)/="000000000000100" and AR1(14 DOWNTO 0)/="000000000001000") then DATA_OUT10 <= DATA_FFT; end if; if(AR2(9 downto 0)=ADDR_STIMERD) then DATA_OUT20 <= "00000" & STIMERD; end if; if(AR2(9 downto 0)/=ADDR_STIMERD) then DATA_OUT20<=DATA_CORE; end if; end if;--rising end process; process (X50) begin if rising_edge(X50) then if (AD(19 DOWNTO 18) = "00") then DATA_OUT<=DATA_OUT0; end if; if (AD(19 DOWNTO 18) = "01") then DATA_OUT<=DATA_OUT1; end if; if(AD(19 DOWNTO 18) /= "00" and AD(19 DOWNTO 18)/="01") then DATA_OUT<=X"0000000" & "00" & INTR1 & INTR0; end if; end if; end process; или я что то делаю не так??? а по поводу адреса AD и AR это и есть адрес и он особо не дешифрируется?? но я в проекте не где не видел больших дешифраторов
  6. есть входная 32-битная шина, и шина адреса на 24 бита, вот эти шины дальше ветвятся по всем модулям, если вы это имеете ввиду. также есть разные управляющие битики, но все эти данные и шины проходят через промежуточные регистры такой отчет я получил в Timing Analyzer, там и написано что (Levels of Logic = 8)
  7. Роман а что значит RTL для XREGOS, под RTL что подразумевается И почему на эти цепи ставить промежуточный регистр, по какому принципу вы их определили??? я так думал что нужно промежуточные цепи ставить где в отчете (fanout=68) большой или я не прав?? я выход первого модуля завожу на регистры и каждый такт соответственно данные в нем защелкиваются, в свою очередь эти регистры я завожу на входы второго модуля, ну т.е. как вы и написали но это особо не помогло
  8. не хочу задавать глупых вопросов а что значит hot-spot?? если я правильно понял то все надо упростить, у меня в главном модуле просто объявлены другие модули как компоненты и сигналы одного модуля заходят на входы другого, я пробовал все эти сигналы заводить через промежуточный регистр но особо не помогло, анализатор всеровну пишет (Levels of Logic = 8), и задержки не меняются подскажите как лучше делать промежуточные регистры так xCSWR: FOR B IN 7 DOWNTO 0 GENERATE CSWR0( B )<=CSW( B ); END GENERATE; или достаточно будет CSWR0 <= CSW;
  9. у меня старая версия ISE плис SPARTAN 3, и там нет PlanAhead, там есть FloorPlaner. Я с ним особо никогда не работал, поэтому особо дельного по этому поводу ничего не могу сказать. Я пробовал как то в ручную все расположить но ничего не получилось
  10. народ вот что у меня выдает Timing Analyzer Timing constraint: TS_CHN = MAXDELAY FROM TIMEGRP "TNM_CHN" TO TIMEGRP "TNM_CHN" 18 ns; For more information, see From:To (Multicycle) Analysis in the Timing Closure User Guide (UG612). 1822320 paths analyzed, 62016 endpoints analyzed, 12401 failing endpoints 12401 timing errors detected. (12401 setup errors, 0 hold errors) Maximum delay is 45.447ns. -------------------------------------------------------------------------------- Slack (setup paths): -27.447ns (requirement - (data path - clock path skew + uncertainty)) Source: XCORRELATOR/XKANAL17/XBLOC_REG_NKAN/XFORM_RM/XFDC1 (FF) Destination: XCORRELATOR/XKANAL17/XGEN_FRQ_KANNEW/NEWCHIPS_12 (FF) Requirement: 18.000ns Data Path Delay: 45.447ns (Levels of Logic = 8) Clock Path Skew: 0.000ns Source Clock: X50 rising at 0.000ns Destination Clock: X50 rising at 20.000ns Clock Uncertainty: 0.000ns Maximum Data Path: XCORRELATOR/XKANAL17/XBLOC_REG_NKAN/XFORM_RM/XFDC1 to XCORRELATOR/XKANAL17/XGEN_FRQ_KANNEW/NEWCHIPS_12 Location Delay type Delay(ns) Physical Resource Logical Resource(s) ------------------------------------------------- ------------------- SLICE_X34Y85.YQ Tcko 0.720 XCORRELATOR/XKANAL17/XBLOC_REG_NKAN/XFORM_RM/RRM XCORRELATOR/XKANAL17/XBLOC_REG_NKAN/XFORM_RM/XFDC1 SLICE_X34Y84.G4 net (fanout=1) 0.438 XCORRELATOR/XKANAL17/XBLOC_REG_NKAN/XFORM_RM/RRM SLICE_X34Y84.Y Tilo 0.608 XCORRELATOR/XKANAL17/XBLOC_REG_NKAN/XFORM_RM/CLR XCORRELATOR/XKANAL17/XBLOC_REG_NKAN/XFORM_RM/CLR1 SLICE_X34Y106.SR net (fanout=1) 1.965 XCORRELATOR/XKANAL17/XBLOC_REG_NKAN/XFORM_RM/CLR SLICE_X34Y106.YQ Trq 1.529 XCORRELATOR/XKANAL17/XBLOC_REG_NKAN/XFORM_RM/RM1 XCORRELATOR/XKANAL17/XBLOC_REG_NKAN/XFORM_RM/XFDC SLICE_X55Y84.G1 net (fanout=3) 4.563 XCORRELATOR/XKANAL17/XBLOC_REG_NKAN/XFORM_RM/RM1 SLICE_X55Y84.Y Tilo 0.551 XCORRELATOR/XKANAL17/XBLOC_REG_NKAN/XRG_FPSP/_N0023 XCORRELATOR/XKANAL17/XBLOC_REG_NKAN/RESK1 SLICE_X40Y71.SR net (fanout=68) 4.360 XCORRELATOR/XKANAL17/XBLOC_REG_NKAN/RESK SLICE_X40Y71.XQ Trq 1.529 XCORRELATOR/XKANAL17/XBLOC_REG_NKAN/NEWSRNSI XCORRELATOR/XKANAL17/XBLOC_REG_NKAN/XREGOS/XFDC6 SLICE_X54Y85.F3 net (fanout=2) 1.817 XCORRELATOR/XKANAL17/XBLOC_REG_NKAN/NEWSRNSI SLICE_X54Y85.X Tilo 0.608 XCORRELATOR/XKANAL17/RESKAN XCORRELATOR/XKANAL17/XBLOC_REG_NKAN/XREGOS/CLR11 SLICE_X41Y121.SR net (fanout=4) 3.179 XCORRELATOR/XKANAL17/XBLOC_REG_NKAN/XREGOS/CLR1 SLICE_X41Y121.YQ Trq 1.529 XCORRELATOR/XKANAL17/DOS<11> XCORRELATOR/XKANAL17/XBLOC_REG_NKAN/XREGOS/QOUT_10 SLICE_X46Y74.F3 net (fanout=39) 8.457 XCORRELATOR/XKANAL17/DOS<10> SLICE_X46Y74.X Tilo 0.608 XCORRELATOR/XKANAL17/KT<2> XCORRELATOR/XKANAL17/XGEN_FRQ_KANNEW/CENEWL1 SLICE_X44Y67.SR net (fanout=2) 1.333 XCORRELATOR/XKANAL17/KT<2> SLICE_X44Y67.XQ Trq 1.529 XCORRELATOR/XKANAL17/KT<0> XCORRELATOR/XKANAL17/XGEN_FRQ_KANNEW/XFDCP SLICE_X102Y64.CE net (fanout=23) 9.522 XCORRELATOR/XKANAL17/KT<0> SLICE_X102Y64.CLK Tceck 0.602 XCORRELATOR/XKANAL17/XGEN_FRQ_KANNEW/NEWCHIPS<12> XCORRELATOR/XKANAL17/XGEN_FRQ_KANNEW/NEWCHIPS_12 ------------------------------------------------- --------------------------- Total 45.447ns (9.813ns logic, 35.634ns route) (21.6% logic, 78.4% route) судя по этому отчету все асинхронные частоты у меня согласованы т.е. метастабильности отсутствуют пробовал делать дополнительные регистры, не особо помогло, особо больших дешифраторов так же как и мультиплексоров нету. что можно еще попробовать???
  11. а что за настройки??? а то я только что не перелапатил, ничего не помогает, или может какую литературу по этому поводу посоветуете??
  12. вот выкладываю сам проект это верхний уровень где подключается два модуля на которые ругается по задержкам begin vcc<='1'; gnd<='0'; sh<=PE; CES<=WRR; SYNHR_S_OUT<=SYNHRS; synh_gPSP_OUT<=synh_gPSP; xCSWR: FOR B IN 7 DOWNTO 0 GENERATE CSWR0(B)<=CSW(B) AND WR_EN; CSRD(B)<=CSR(B) AND RD_EN AND N_KANR; END GENERATE; CSWR<=CSWR0; data<=da; n_kanw1<=n_kanW; Xbloc_reg_nkan: bloc_reg_nkan PORT MAP( da =>data , cs =>csWR(7 downto 0) , n_kan =>n_kanW1 , clk =>x50mh , memw =>memw , r_m =>r_m , dos =>dos , ddop =>ddop , dsdvig =>dsdvig, dfpsp=>dfpsp, NCHIPS=>NCHIPS, l =>l , DF=>DF , ce =>ce, x1ms=>x1ms, reskan=>reskan, cssynhr=>cssynhr, ces1ms=>ces1ms, ces1s=>ces1s, cssdvig=>cssdvig, changef=>changef, ADC=>ADC ); F<=X & "00000000000000000000000"; I_ADC<=I_ADC1 WHEN ADC='0' ELSE I_ADC2; Q_ADC<=Q_ADC1 WHEN ADC='0' ELSE Q_ADC2; Xgen_frq_kannew: gen_frq_kannew PORT MAP( CODE =>dos(10 DOWNTO 8) , csvt => ce, memw=>memw, Lvt=>L, changef=>changef, r_m =>reskan , synhr_1ms => synh_gPSP, synhr_1s =>synhrs , clk =>x50mh , DFPSP=>DFPSP, NCHIPS => NCHIPS, FPSPx2 => FPTx2, FPSPs => FPSPs, FPSP =>FPSPA , hpt =>hpt1i , hpt05 =>hpt0 , hvt =>hvta , hvt_1 =>hvt_1 , qread =>qr, pdvt => pdvt, VTCODE => VTCODE, KT => KTGFPSP ); а сами модули вот library UNISIM; use UNISIM.VComponents.all; entity gen_frq_kannew is --12in Port ( CHANGEF : in std_logic; CODE:IN STD_LOGIC_VECTOR (2 DOWNTO 0); DFPSP:in std_logic_vector(31 downto 0); NCHIPS:in std_logic_vector(12 downto 0); Lvt:in std_logic_vector(9 downto 0); r_m : in std_logic; synhr_1ms,synhr_1s : in std_logic; memw,csvt,clk : in std_logic; FPSPx2,FPSPs : OUT std_logic; FPSP : OUT std_logic; hpt,hvt,HVT_1,HPT05,HPT_1 : OUT std_logic; qread:out std_logic_vector(31 downto 0); pdvt:out std_logic_vector(9 downto 0); VTCODE:OUT STD_LOGIC; KT:OUT STD_LOGIC_VECTOR(5 DOWNTO 0) ); end gen_frq_kannew; architecture Behavioral of gen_frq_kannew is attribute syn_hier : string; attribute syn_hier of Behavioral : architecture is "hard"; component acum_fazavhd port ( B: IN std_logic_VECTOR(31 downto 0); Q,S: OUT std_logic_VECTOR(31 downto 0); CLK: IN std_logic; BYPASS: IN std_logic; Q_C_OUT: OUT std_logic; C_OUT: OUT std_logic; ACLR,SINIT: IN std_logic); end component; COMPONENT sthptnew PORT( res,SYNHR_1MS : IN std_logic; L : IN std_logic_VECTOR(12 DOWNTO 0); clk:in std_logic; FPSP : IN std_logic; q : OUT std_logic_vector(12 downto 0); HPT0,HPT1,HPT2,HPT05,HPT15 : OUT std_logic ); END COMPONENT; COMPONENT st_time_out PORT( ce,memw,hpt,CLK : IN std_logic; l:in std_logic_vector (9 downto 0); res : IN std_logic; synh : IN std_logic; qout_time : OUT std_logic_vector(9 downto 0); HVT,HVT0 : OUT std_logic ); END COMPONENT; COMPONENT wr_1a PORT( WR : IN std_logic; CLK : IN std_logic; RES : IN std_logic; A : OUT std_logic; PE : OUT std_logic; PE1 : OUT std_logic ); END COMPONENT; COMPONENT st5 PORT( CLK : IN std_logic; CLK5 : OUT std_logic ); END COMPONENT; signal q_faza:std_logic_vector(31 downto 0):="00000000000000000000000000000000"; signal qout_vt_1s:std_logic_vector(9 downto 0):="0000000000"; signal qout_hpt_1ms,pdpt:std_logic_vector(12 downto 0):="0000000000000"; signal gnd:std_logic:='0'; signal vcc:std_logic:='1'; signal FREQ1A,FREQ1A0,rma,FPSPi,FPSPT,FPSPx2T,FPSPx2L,FPSPsi,HVT0:std_logic; signal hp_t,h_pt1,h_vt,synhr,CLRF,resfaza,hpt05i,HPT15i,HPT0:std_logic; signal accum1,accum2:std_logic_vector(8 downto 0); signal B,B1,NEWF:std_logic_vector(31 downto 0); SIGNAL Nnew,NEWCHIPS:STD_LOGIC_VECTOR(12 DOWNTO 0); signal NEWBCEpre,NEWBCESET,NEWLCE,newBcet,newBcet2,newL,cenewL,rnewL,NEWLT:std_logic; SIGNAL NEWBCE:STD_LOGIC:='1'; signal firstB,FIRSTL,SINITACC:std_logic; signal CODE2:std_logic_vector(2 downto 0); CONSTANT DFPSPVT:STD_LOGIC_VECTOR(31 DOWNTO 0):=X"1A29C77A"; --signal znak_dop:std_logic_vector (15 downto 0); signal r_mi : std_logic; signal NCHIPSi : std_logic_vector (12 downto 0); begin gnd<='0'; vcc<='1'; -------------------------------- r_mi <= r_m; NCHIPSi <= NCHIPS; HPT05<=hpt15i; rnewL<=r_mi or (sinitacc);-- AND NEWLT); cenewL<=CHANGEF and code(2); Xfdc: fdcpe port map (d=>vcc,c=>clk,ce=>gnd,pre=>cenewL,clr=>rnewL,q=>newL); firstB<='1' when B=x"00000000" else '0'; NEWBCEpre<=(HVT0 AND hpt15i AND FREQ1A AND NEWLT);-- or (not NEWL); NEWBCESET<=NEWBCEPRE OR R_Mi; xFDCP: FDCPe PORT MAP (D=>GND,c=>clk,Ce=>GND,PRE=>NEWBCESET,CLR=>CENEWL,Q=>NEWBCE); --SINITACC<=NEWBCET;-- and not NEWBCET2; NEWF<=DFPSPVT WHEN NEWL='1' AND HVT0='1' AND HPT15i='1' ELSE DFPSP; process (clk,r_mi) begin if r_mi='1' then B<=(others=>'0'); NEWCHIPS<=(OTHERS=>'0'); NEWLT<='0'; newBcet2<='0'; elsif (rising_edge(clk)) then --if (sinitacc='1') then B<=NEWF(30 downto 0) & '0'; end if; if (newBce='1') then B<=NEWF; end if; if (newBce='1') then VTCODE<=CODE2(2); end if; if (newBceT='1') then NEWCHIPS<=NNEW; end if; IF CHANGEF='1' THEN CODE2<=CODE; END IF; NEWLT<=NEWL; newBcet2<=newBcet; Nnew<=NCHIPSi; end if; end process; newBcet<=newBce; sinitacc<=newBcepre; B1<=DFPSPVT WHEN sinitacc='1' ELSE B; Xacum_faza : acum_fazavhd port map (q=>q_faza(31 downto 0), B => B1, CLK => clk, Q_C_OUT => FREQ1A, --ЧАСТОТА ПСП C_OUT => FREQ1A0, --ЧАСТОТА ПСП НА ТАКТ РАНЬШЕ SINIT=>SYNHR, BYPASS=>sinitacc, ACLR => RMA ); FPSPsi<=FPSPi AND NOT FPSPT; FPSPs<=FPSPsi; FPSPx2L<=NOT Q_FAZA(30); FPSPx2<=FPSPx2L AND NOT FPSPx2T; xFD1: FD PORT MAP (D=>FPSPx2L,C=>CLK,Q=>FPSPx2T); FPSPi<=not Q_FAZA(31); xFD2: FD PORT MAP (D=>FPSPi,C=>CLK,Q=>FPSPT); FPSP<=FPSPi; rma<=r_mi;-- or synhr; xsthptnew: sthptnew PORT MAP( res =>r_mi, SYNHR_1MS =>SYNHR, L => NEWCHIPS, clk => CLK, FPSP=>FPSPsi, q =>qout_hpt_1ms , HPT0=>HPT0, HPT15=>hpt15i ); hpt<=HPT0; hpt_1<=hpt15i; HVT_1<=hpt15i AND HVT0; xst_time_out: st_time_out PORT MAP( CLK =>CLK , ce=>csvt, memw=>memw, L=>Lvt, hpt =>HPT0 , res =>r_mi, synh =>synhr_1s , qout_time =>qout_vt_1s , HVT =>h_vt , HVT0 => HVT0 ); synhr<=synhr_1ms;-- or synhr_1s; --OR is in "kanal" hvt<=h_vt; --QREAD(41 DOWNTO 34)<=(OTHERS=>'0'); PROCESS (clk) BEGIN IF RISING_EDGE(CLK) THEN qread(31 downto 22)<=qout_vt_1s; pdpt<=qout_hpt_1ms; qread(21 downto 9)<=pdpt; accum1<= q_faza(31 downto 23); accum2<= accum1; qread(8 downto 0)<= accum2; END IF; END PROCESS; и вот второй модуль entity FORM_RM is Port ( MEMW,cs,n_kan : in std_logic; DA:IN STD_LOGIC_VECTOR(31 DOWNTO 0); -- x1MS : in std_logic; x50 : in std_logic; RES : in std_logic; R_M,rm1 : out std_logic ); end FORM_RM; architecture Behavioral of FORM_RM is SIGNAL VCC:STD_LOGIC:='1'; SIGNAL CLR,csa,R_Mi,RRM:STD_LOGIC:='0'; begin R_M<=R_Mi or res; rm1<=r_mi; xFDC: FDCE PORT MAP (D=>dA(0),ce=>csa,C=>MEMW,CLR=>clr ,Q=>R_Mi); xFDC1: FDC PORT MAP (D=>R_Mi,C=>x50,CLR=>RES ,Q=>RRM); clr<=RRM or res; csa<=n_kan and cs; end Behavioral; вот он ругается на задержки между xFDC1 и сигналом NEWCHIPS, это я выложил отдельные модули как весь проект показать я не знаю народ подскажите как уменьшить эти задержки уже только что не пробовал я не совсем понял что за GUI ??? у меня проект собирается через командную строку, а не через ISE.
  13. сложновато будет выложить проект он слишком большой и состоит из многих отдельных файлов. Если на вскидку сказать как можно уменьшить время задержки??? ну какими путями, например поможет если длинные цепи разбить на более короткие дополнительными регистрами???
  14. Всем здрасти. Люди помогите с одной проблемой. В Timing Analyzer делаю анализ он выдает ошибки, то что не выдерживаются констрэйны по не которым цепям ну типа такой Slack (setup paths): -26.630ns (requirement - (data path - clock path skew + uncertainty)) Source: XCORRELATOR/XKANAL17/XBLOC_REG_NKAN/XFORM_RM/XFDC1 (FF) Destination: XCORRELATOR/XKANAL17/XGEN_FRQ_KANNEW/NEWCHIPS_7 (FF) Requirement: 18.000ns Data Path Delay: 44.630ns (Levels of Logic = 8) Clock Path Skew: 0.000ns Source Clock: X50 rising at 0.000ns Destination Clock: X50 rising at 20.000ns Clock Uncertainty: 0.000ns Maximum Data Path: XCORRELATOR/XKANAL17/XBLOC_REG_NKAN/XFORM_RM/XFDC1 to XCORRELATOR/XKANAL17/XGEN_FRQ_KANNEW/NEWCHIPS_7 т.е. ограничения превышает на 26 нс. как можно сократить время распространения сигнала по этой цепи???
  15. по поводу записи я так сделал чтобы по отрицательному фронту выставлялся WR_EN, а сама запись в регистр (т.е. данные снимаются с шину) когда WR_EN<=1 по поводу чтения было вот так DATA_OUT<=DATA_OUT0 WHEN AD(19 DOWNTO 18)="00" ELSE DATA_OUT1 WHEN AD(19 DOWNTO 18)="01" ELSE X"0000000" & "00" & INTR1 & INTR0; как вы предлагаете я тоже делал к сожалению это ситуацию не очень сильно улучшило, как глючит 7-ой бит так и продолжает