Специальные цены   новые товары
Закрытая тема
Страница 2 из 4 ПерваяПервая 1 2 3 4 ПоследняяПоследняя
Показано с 41 по 80 из 137

5-Microstep Drive. Xilinx CPLD

Тема раздела Драйверы и контроллеры для CNC в категории Станки ЧПУ, Hobby CNC, инструмент; Похоже дело в распиновке ног на OSCA, OSCB и CLK. Разместил ноги: CLK - P1 OSCA - P42 OSCB - ...

  1. #41

    Регистрация
    03.04.2006
    Адрес
    Торонто
    Возраст
    53
    Сообщений
    676
    Похоже дело в распиновке ног на OSCA, OSCB и CLK. Разместил ноги:
    CLK - P1
    OSCA - P42
    OSCB - P2

    Теперь ругается только на CLK и похоже требует чтобы я ей схему включения CLK нарисовал.
    Cpld - Inferring BUFG constraint for signal 'CLK' based upon the LOC constraint 'P1'. It is recommended that you declare this BUFG explicitedly in your design. Note that for certain device families the output of a BUFG constraint can not drive a gated clock, and the BUFG constraint will be ignored.

    В общем дело в распиновке. Читаю документацию.

  2.  
  3. #42

    Регистрация
    13.07.2006
    Адрес
    Харьков, украина
    Возраст
    57
    Сообщений
    928
    Этот пип ПЛД требует подключения CLK на выделенный (по доке) пин - нуна назначить на него и подключить входной буффер.

  4. #43

    Регистрация
    03.04.2006
    Адрес
    Торонто
    Возраст
    53
    Сообщений
    676
    Ну и какой это пин и как подключить входной буффер?

  5. #44

    Регистрация
    03.04.2006
    Адрес
    Торонто
    Возраст
    53
    Сообщений
    676
    Спаял сегодня программатор. Пока сверлил плату сломал два сверла Грустно.

    Перенес в проекте OSCA с 44 на 42 ногу (CLK и OSCB остались на старых 2 и 43) и все ошибки ушли. Подключил праграмматор через LPT кабель. Провозился с пару часов но так законнектится к CPLD не смог. Все проверил, даже саму CPLD на другую перепаял, не помогло. Потом выяснил что по умолчанию iMPACT использует Parallel Cable IV а у меня III. Поменял настройки, не помогло. Выкинул нахрен кабель и воткнул программатор напрямую в LPT порт. Все заработало как часы. Значит надо поиграться с входными сопротивлениями в программаторе.

    CPLD прошилась быстро и после перегрузки питания получил красивые ипмульсы CLK (OSC.

    Теперь вторая проблемма. Моя покупная плата опторазвязки наотрез отказывается работать с частотами сигналов STEP. DIR проходит а ШАГ проскочить не успевает. Оптопары стоят 817D. На самом драйвере опторазвязка отсутствует, а напрямую в LPT порт (даже для теста) подсоединять что-то страшновато. Придется завтра паять опторазвязку на HCPL2631.

  6.  
  7. #45

    Регистрация
    13.07.2006
    Адрес
    Харьков, украина
    Возраст
    57
    Сообщений
    928
    при использовании Мача можно инвертануть сигнал степ - полегчает.
    тут подробно с картинками как настроить мач http://kosmodrom.com.ua/data/cncstepdriver/cnccall.php

  8. #46

    Регистрация
    03.04.2006
    Адрес
    Торонто
    Возраст
    53
    Сообщений
    676
    Инвертнул степ, действительно полегчало. Заодно и в программе CPLD пришлось степ проинвертировать. Еще слегка промучался с уровнями входных сигналов. Между платой опторазвязки и входами драйвера воткнул последовательно по диоду. Теперь хоть сигналы красиво до входа cpld доходят. На выходах стоит меандр. Пока все работает как надо. Время подключать двигатель и смотреть откуда дым повалит. Шучу, но надо приготовиться.

  9. #47

    Регистрация
    03.04.2006
    Адрес
    Торонто
    Возраст
    53
    Сообщений
    676
    Подсоеденил мотор, дал для начала 24В питания. Ограничил ток до 1А (внешний резистор на установку ограничения тока работает как надо. 1к эквивалентен 1А) Все заработало. Крутится во все стороны. Добавил скорости. Пищать стал меньше. Руками вал не остановить. Не совсем понятно работает-ли ограничение тока при остановке двигателя. Этим попозже займусь.

    На данный момент драй работает намного приятней чем то что делал на LS7290. Наверно потому что микростеп работает.

    Согласно формуле Марисса по расчету необходимого напряжения питания получается что моему мотору нужно 59В.
    Индуктивность обмотки 3.4 mH, квадратный корень из 3.4 * на 32 = 59В.

    Подсоеденил блок питания на 48В. Что тут началось. Компьютер аж запищал. Клавиатура стала выдавать непонятно что. Mach крутит взад-вперед невзирая на положение клавиш. Видно помехи валят ну очень сильные. Заэкранировал провода от мотора, слегка помогло но не до конца. Наверно и сам мотор надо на землю сажать. Пока буду крутить от 24В. Выходные транзисторы на радиаторы не цеплял, а они и не греются.

    В целом впечатления хорошие. Теперь надо еще 3 драйва собрать и пробовать на станке. Уже должно быть быстрее.

    Схему как файл прикреплять уже нельзя. Кому надо текущий вариант схемы берем тут.

  10.  
  11. #48

    Регистрация
    01.12.2008
    Адрес
    г. Одесса
    Возраст
    46
    Сообщений
    443
    Цитата Сообщение от boldive Посмотреть сообщение
    Придется завтра паять опторазвязку на HCPL2631.
    Вы решили вопрос опторазвязки ?
    если да - выложите пож. схему и каковы результаты.....

    заранее благодарен

    (сам бьюсь с этой проблемой - Опять про ТА8435Н & TB6560A - может что дельное подскажите)

  12. #49

    Регистрация
    03.04.2006
    Адрес
    Торонто
    Возраст
    53
    Сообщений
    676
    В качестве опторазвязки покупная плата. Еще весной на eBay купил. Её описание есть тут: опторазвязка mdcncdb2501. Там стандартное включение оптопары 817D. Поскольку в Mach стоит активный уровень "0" то я пустил сигналы от оптопары через последовательно включенный диод на вход драйва, катод диода к оптопаре а анод к драйву. Теперь "0" с оптопары через диод шунтирует вход драйва. А 5В с опторазвязки запираются диодом и не портят мне 3.3В на входе cpld. Теперь моя "1" приходит от 3.3В питания cpld а "0" (точнее 0.6В, падение напрядения на диоде) за счет шунтирования входа.

    В самом Mach в настройках двигателя выставил длительность импульсов 15ms, хотел 25 поставить, но Mach не дал это сделать.

    Вот моя входная схема Step and Dir.

    Даже с диодами она поначалу работать не хотела, увеличил номиналы подтягтвающих резисторов с 3.3к до 6.8к и тогда заработало. Похоже что у этих оптопар нагрузочные токи никакие. Одним словом развязку надо делать на HCPL2631. Тогда все работает как надо без всяких танцев с бубном.

    Это я потом соберу. Для начала хватит того что есть.

    Я не совсем понял в чем именно у вас проблеммы с опторазвязкой.

  13. #50

    Регистрация
    07.01.2008
    Адрес
    Хутор
    Возраст
    46
    Сообщений
    31
    Цитата Сообщение от mura Посмотреть сообщение
    В лоб не прокомпилилась, там используется Ксайлинкоская либа, но у Альтеры есть аналогичная - попробую ее прикрутить.
    Получилось или нет ?

  14. #51

    Регистрация
    13.07.2006
    Адрес
    Харьков, украина
    Возраст
    57
    Сообщений
    928
    В процессе...

  15. #52

    Регистрация
    13.07.2006
    Адрес
    Харьков, украина
    Возраст
    57
    Сообщений
    928
    НЕМНОГО теории Верилога, и присланный проект компилится без ошибок.
    Лег в EPM3064, занял 64% - как будет работать посмотрим на праздниках.

  16. #53

    Регистрация
    03.04.2006
    Адрес
    Торонто
    Возраст
    53
    Сообщений
    676
    Насколько я понял EPM3064 содержит 64 microsells. У Xilinx XC2C64A (тоже 64 ячейки) это легло в 33 ячейки или 52%.

    На всякий случай вот распечатка всех деталей компиляции.


    cpldfit: version L.33 Xilinx Inc.
    Fitter Report
    Design Name: uStep Date: 12-11-2009, 2:27PM
    Device Used: XC2C64A-7-VQ44
    Fitting Status: Successful

    ************************* Mapped Resource Summary **************************

    Macrocells Product Terms Function Block Registers Pins
    Used/Tot Used/Tot Inps Used/Tot Used/Tot Used/Tot
    33 /64 ( 52%) 77 /224 ( 34%) 67 /160 ( 42%) 29 /64 ( 45%) 16 /33 ( 48%)

    ** Function Block Resources **

    Function Mcells FB Inps Pterms IO CTC CTR CTS CTE
    Block Used/Tot Used/Tot Used/Tot Used/Tot Used/Tot Used/Tot Used/Tot Used/Tot
    FB1 16/16* 28/40 37/56 2/ 8 1/1* 0/1 0/1 0/1
    FB2 12/16 22/40 21/56 2/ 9 1/1* 0/1 0/1 0/1
    FB3 3/16 6/40 8/56 3/ 9 1/1* 0/1 0/1 0/1
    FB4 2/16 11/40 11/56 2/ 7 1/1* 0/1 0/1 0/1
    ----- ------- ------- ----- --- --- --- ---
    Total 33/64 67/160 77/224 9/33 4/4 0/4 0/4 0/4

    CTC - Control Term Clock
    CTR - Control Term Reset
    CTS - Control Term Set
    CTE - Control Term Output Enable

    * - Resource is exhausted

    ** Global Control Resources **

    GCK GSR GTS DGE
    Used/Tot Used/Tot Used/Tot Used/Tot
    0/3 0/1 0/4 0/0


    ** Pin Resources **

    Signal Type Required Mapped | Pin Type Used Total
    ------------------------------------|------------------------------------
    Input : 7 7 | I/O : 10 25
    Output : 8 8 | GCK/IO : 1 3
    Bidirectional : 1 1 | GTS/IO : 4 4
    GCK : 0 0 | GSR/IO : 1 1
    GTS : 0 0 |
    GSR : 0 0 |
    ---- ----
    Total 16 16

    End of Mapped Resource Summary
    ************************* Summary of Mapped Logic ************************

    ** 9 Outputs **

    Signal Total Total Bank Loc Pin Pin Pin I/O I/O Slew Reg Reg Init
    Name Pts Inps No. Type Use STD Style Rate Use State
    DUMP 3 6 2 FB1_12 31 GTS/I/O O LVCMOS33 OD SLOW DFF/S SET
    A1 4 5 2 FB1_13 30 GSR/I/O O LVCMOS33 SLOW DFF RESET
    OSCB 1 1 1 FB2_7 43 GCK/I/O O LVCMOS33 SLOW
    STBY 1 3 1 FB2_13 3 I/O I/O LVCMOS33 OD/S FAST
    A0 4 5 2 FB3_1 29 I/O O LVCMOS33 SLOW DFF RESET
    B1 3 4 2 FB3_2 28 I/O O LVCMOS33 SLOW DFF RESET
    B0 3 4 2 FB3_3 27 I/O O LVCMOS33 SLOW DFF RESET
    BSIN 6 10 1 FB4_11 12 I/O O LVCMOS33 OD SLOW TFF/S SET
    ASIN 6 10 1 FB4_13 13 I/O O LVCMOS33 OD SLOW TFF/S SET

    ** 24 Buried Nodes **

    Signal Total Total Loc Reg Reg Init
    Name Pts Inps Use State
    QA<2> 5 9 FB1_1 TFF RESET
    QA<1> 6 8 FB1_2 TFF RESET
    QB<1> 3 4 FB1_3 DFF RESET
    QB<5> 3 8 FB1_4 TFF RESET
    QD<2> 3 14 FB1_5 TFF RESET
    QD<1> 3 13 FB1_6 TFF RESET
    QD<0> 3 12 FB1_7 TFF RESET
    QB<6> 3 9 FB1_8 TFF RESET
    QB<2> 3 5 FB1_9 DFF RESET
    QB<3> 3 6 FB1_10 DFF RESET
    QB<4> 3 7 FB1_11 TFF RESET
    QB<7> 3 10 FB1_14 TFF RESET
    Q11 3 7 FB1_15 DFF RESET
    Q10 3 7 FB1_16 DFF RESET
    QA<0> 3 5 FB2_3 TFF RESET
    QC<0> 3 4 FB2_4 DFF RESET
    N_PZ_175 2 4 FB2_8
    QB<0> 2 3 FB2_9 DFF RESET
    N_PZ_135 4 6 FB2_10
    Q02 3 4 FB2_11 DEFF RESET
    QC<1> 3 5 FB2_12 TFF RESET
    Q05 2 3 FB2_14 DFF RESET
    Q04 2 2 FB2_15 DFF RESET
    Q03 2 2 FB2_16 DFF RESET

    ** 8 Inputs **

    Signal Bank Loc Pin Pin Pin I/O I/O
    Name No. Type Use STD Style
    DIR 2 FB1_1 38 I/O I LVCMOS33 S
    STP 2 FB1_2 37 I/O I LVCMOS33 S
    RES 2 FB1_9 34 GTS/I/O I LVCMOS33 S
    AIN 2 FB1_10 33 GTS/I/O I LVCMOS33 S
    BIN 2 FB1_11 32 GTS/I/O I LVCMOS33 S
    OSCA 1 FB2_6 42 I/O I LVCMOS33 S
    CLK 1 FB2_12 2 I/O I LVCMOS33 S
    STBY 1 FB2_13 3 I/O I/O LVCMOS33 S

    Legend:
    Pin No. - ~ - User Assigned
    I/O Style - OD - OpenDrain
    - PU - Pullup
    - KPR - Keeper
    - S - SchmittTrigger
    - DG - DataGate
    Reg Use - LATCH - Transparent latch
    - DFF - D-flip-flop
    - DEFF - D-flip-flop with clock enable
    - TFF - T-flip-flop
    - TDFF - Dual-edge-triggered T-flip-flop
    - DDFF - Dual-edge-triggered flip-flop
    - DDEFF - Dual-edge-triggered flip-flop with clock enable
    /S (after any above flop/latch type) indicates initial state is Set
    ************************** Function Block Details ************************
    Legend:
    Total Pt - Total product terms used by the macrocell signal
    Loc - Location where logic was mapped in device
    Pin Type/Use - I - Input GCK - Global clock
    O - Output GTS - Global Output Enable
    (b) - Buried macrocell GSR - Global Set/Reset
    VRF - Vref
    Pin No. - ~ - User Assigned
    *********************************** FB1 ***********************************
    This function block is part of I/O Bank number: 2
    Number of function block inputs used/remaining: 28/12
    Number of function block control terms used/remaining: 1/3
    Number of PLA product terms used/remaining: 37/19
    Signal Total Loc Pin Pin Pin CTC CTR CTS CTE
    Name Pt No. Type Use
    QA<2> 5 FB1_1 38 I/O I +
    QA<1> 6 FB1_2 37 I/O I +
    QB<1> 3 FB1_3 36 I/O (b) +
    QB<5> 3 FB1_4 (b) (b) +
    QD<2> 3 FB1_5 (b) (b) +
    QD<1> 3 FB1_6 (b) (b) +
    QD<0> 3 FB1_7 (b) (b) +
    QB<6> 3 FB1_8 (b) (b) +
    QB<2> 3 FB1_9 34 GTS/I/O I +
    QB<3> 3 FB1_10 33 GTS/I/O I +
    QB<4> 3 FB1_11 32 GTS/I/O I +
    DUMP 3 FB1_12 31 GTS/I/O O +
    A1 4 FB1_13 30 GSR/I/O O +
    QB<7> 3 FB1_14 (b) (b) +
    Q11 3 FB1_15 (b) (b) +
    Q10 3 FB1_16 (b) (b) +

    Signals Used by Logic in Function Block
    1: AIN 11: QA<1> 20: QB<7>
    2: BIN 12: QA<2> 21: QC<0>
    3: CLK 13: QB<0> 22: QC<1>
    4: N_PZ_135 14: QB<1> 23: QD<0>
    5: N_PZ_175 15: QB<2> 24: QD<1>
    6: Q02 16: QB<3> 25: QD<2>
    7: Q05 17: QB<4> 26: RES
    8: Q10 18: QB<5> 27: STBY
    9: Q11 19: QB<6> 28: STBY.PIN
    10: QA<0>

    Signal 1 2 3 4 FB
    Name 0----+----0----+----0----+----0----+----0 Inputs
    QA<2> ..XX.XX..XXX........X....X.............. 9
    QA<1> ..XX.XX..XX.........X....X.............. 8
    QB<1> ..XX........XX.......................... 4
    QB<5> ..XX........XXXXXX...................... 8
    QD<2> ..X...X.....XXXXXXXX..XXX.X............. 14
    QD<1> ..X...X.....XXXXXXXX..XX..X............. 13
    QD<0> ..X...X.....XXXXXXXX..X...X............. 12
    QB<6> ..XX........XXXXXXX..................... 9
    QB<2> ..XX........XXX......................... 5
    QB<3> ..XX........XXXX........................ 6
    QB<4> ..XX........XXXXX....................... 7
    DUMP ..X.............XXXX.......X............ 6
    A1 ..X.X..X............XX.................. 5
    QB<7> ..XX........XXXXXXXX.................... 10
    Q11 .XX.....X.......XXXX.................... 7
    Q10 X.X....X........XXXX.................... 7
    0----+----1----+----2----+----3----+----4
    0 0 0 0
    *********************************** FB2 ***********************************
    This function block is part of I/O Bank number: 1
    Number of function block inputs used/remaining: 22/18
    Number of function block control terms used/remaining: 1/3
    Number of PLA product terms used/remaining: 21/35
    Signal Total Loc Pin Pin Pin CTC CTR CTS CTE
    Name Pt No. Type Use
    (unused) 0 FB2_1 39 I/O
    (unused) 0 FB2_2 40 I/O
    QA<0> 3 FB2_3 (b) (b) +
    QC<0> 3 FB2_4 (b) (b) +
    (unused) 0 FB2_5 41 I/O
    (unused) 0 FB2_6 42 I/O I
    OSCB 1 FB2_7 43 GCK/I/O O
    N_PZ_175 2 FB2_8 44 GCK/I/O (b)
    QB<0> 2 FB2_9 (b) (b) +
    N_PZ_135 4 FB2_10 1 GCK/I/O (b)
    Q02 3 FB2_11 (b) (b) +
    QC<1> 3 FB2_12 2 I/O I +
    STBY 1 FB2_13 3 I/O I/O
    Q05 2 FB2_14 (b) (b) +
    Q04 2 FB2_15 (b) (b) +
    Q03 2 FB2_16 (b) (b) +

    Signals Used by Logic in Function Block
    1: CLK 9: QA<0> 16: QC<1>
    2: DIR 10: QA<1> 17: QD<0>
    3: N_PZ_135 11: QA<2> 18: QD<1>
    4: OSCA 12: QB<0> 19: QD<2>
    5: Q02 13: QB<6> 20: RES
    6: Q03 14: QB<7> 21: STBY.PIN
    7: Q04 15: QC<0> 22: STP
    8: Q05

    Signal 1 2 3 4 FB
    Name 0----+----0----+----0----+----0----+----0 Inputs
    QA<0> X.X....XX..........X.................... 5
    QC<0> X.X...........X....X.................... 4
    OSCB ...X.................................... 1
    N_PZ_175 ............XX.....XX................... 4
    QB<0> X.X........X............................ 3
    N_PZ_135 ....X..XXXX...X......................... 6
    Q02 XX...XX................................. 4
    QC<1> X.X.......X....X...X.................... 5
    STBY ................XXX..................... 3
    Q05 X....XX................................. 3
    Q04 X....X.................................. 2
    Q03 X....................X.................. 2
    0----+----1----+----2----+----3----+----4
    0 0 0 0
    *********************************** FB3 ***********************************
    This function block is part of I/O Bank number: 2
    Number of function block inputs used/remaining: 6/34
    Number of function block control terms used/remaining: 1/3
    Number of PLA product terms used/remaining: 8/48
    Signal Total Loc Pin Pin Pin CTC CTR CTS CTE
    Name Pt No. Type Use
    A0 4 FB3_1 29 I/O O +
    B1 3 FB3_2 28 I/O O +
    B0 3 FB3_3 27 I/O O +
    (unused) 0 FB3_4 (b)
    (unused) 0 FB3_5 (b)
    (unused) 0 FB3_6 23 I/O
    (unused) 0 FB3_7 (b)
    (unused) 0 FB3_8 (b)
    (unused) 0 FB3_9 (b)
    (unused) 0 FB3_10 22 I/O
    (unused) 0 FB3_11 21 I/O
    (unused) 0 FB3_12 20 I/O
    (unused) 0 FB3_13 (b)
    (unused) 0 FB3_14 19 I/O
    (unused) 0 FB3_15 18 I/O
    (unused) 0 FB3_16 (b)

    Signals Used by Logic in Function Block
    1: CLK 3: Q10 5: QC<0>
    2: N_PZ_175 4: Q11 6: QC<1>

    Signal 1 2 3 4 FB
    Name 0----+----0----+----0----+----0----+----0 Inputs
    A0 XXX.XX.................................. 5
    B1 XX.X.X.................................. 4
    B0 XX.X.X.................................. 4
    0----+----1----+----2----+----3----+----4
    0 0 0 0
    *********************************** FB4 ***********************************
    This function block is part of I/O Bank number: 1
    Number of function block inputs used/remaining: 11/29
    Number of function block control terms used/remaining: 1/3
    Number of PLA product terms used/remaining: 11/45
    Signal Total Loc Pin Pin Pin CTC CTR CTS CTE
    Name Pt No. Type Use
    (unused) 0 FB4_1 5 I/O
    (unused) 0 FB4_2 6 I/O
    (unused) 0 FB4_3 (b)
    (unused) 0 FB4_4 (b)
    (unused) 0 FB4_5 (b)
    (unused) 0 FB4_6 (b)
    (unused) 0 FB4_7 8 I/O
    (unused) 0 FB4_8 (b)
    (unused) 0 FB4_9 (b)
    (unused) 0 FB4_10 (b)
    BSIN 6 FB4_11 12 I/O O +
    (unused) 0 FB4_12 (b)
    ASIN 6 FB4_13 13 I/O O +
    (unused) 0 FB4_14 14 I/O
    (unused) 0 FB4_15 16 I/O
    (unused) 0 FB4_16 (b)

    Signals Used by Logic in Function Block
    1: ASIN 5: QA<1> 9: QB<2>
    2: BSIN 6: QA<2> 10: QB<3>
    3: CLK 7: QB<0> 11: QB<4>
    4: QA<0> 8: QB<1>

    Signal 1 2 3 4 FB
    Name 0----+----0----+----0----+----0----+----0 Inputs
    BSIN .XXXXXXXXXX............................. 10
    ASIN X.XXXXXXXXX............................. 10
    0----+----1----+----2----+----3----+----4
    0 0 0 0
    ******************************* Equations ********************************

    ********** Mapped Logic **********

    FDCPE_A0: FDCPE port map (A0,A0_D,CLK,'0','0','1');
    A0_D <= (QC(0) AND N_PZ_175)
    XOR ((N_PZ_175 AND QC(1) AND NOT Q10)
    OR (N_PZ_175 AND NOT QC(1) AND Q10));

    FDCPE_A1: FDCPE port map (A1,A1_D,CLK,'0','0','1');
    A1_D <= (QC(0) AND N_PZ_175)
    XOR ((N_PZ_175 AND QC(1) AND Q10)
    OR (N_PZ_175 AND NOT QC(1) AND NOT Q10));

    FTCPE_ASIN: FTCPE port map (ASIN,ASIN_T,CLK,'0','0','1');
    ASIN_T <= ((NOT QA(1) AND NOT QA(0) AND QA(2) AND QB(0) AND QB(2) AND ASIN)
    OR (NOT QB(4) AND NOT QB(1) AND NOT QB(0) AND NOT QB(2) AND NOT QB(3) AND NOT ASIN)
    OR (QA(1) AND QA(0) AND NOT QA(2) AND QB(1) AND QB(0) AND QB(2) AND
    QB(3) AND ASIN)
    OR (QA(1) AND NOT QA(0) AND NOT QA(2) AND QB(4) AND QB(1) AND QB(0) AND
    QB(2) AND ASIN)
    OR (NOT QA(1) AND QA(0) AND NOT QA(2) AND QB(4) AND QB(0) AND QB(2) AND
    QB(3) AND ASIN)); -- Open Drain

    FDCPE_B0: FDCPE port map (B0,B0_D,CLK,'0','0','1');
    B0_D <= ((N_PZ_175 AND QC(1) AND NOT Q11)
    OR (N_PZ_175 AND NOT QC(1) AND Q11));

    FDCPE_B1: FDCPE port map (B1,B1_D,CLK,'0','0','1');
    B1_D <= ((N_PZ_175 AND QC(1) AND Q11)
    OR (N_PZ_175 AND NOT QC(1) AND NOT Q11));

    FTCPE_BSIN: FTCPE port map (BSIN,BSIN_T,CLK,'0','0','1');
    BSIN_T <= ((NOT QA(1) AND NOT QA(0) AND NOT QA(2) AND QB(0) AND QB(2) AND BSIN)
    OR (NOT QB(4) AND NOT QB(1) AND NOT QB(0) AND NOT QB(2) AND NOT QB(3) AND NOT BSIN)
    OR (NOT QA(1) AND NOT QA(2) AND QB(1) AND QB(0) AND QB(2) AND QB(3) AND
    BSIN)
    OR (NOT QA(0) AND NOT QA(2) AND QB(4) AND QB(1) AND QB(0) AND QB(2) AND
    BSIN)
    OR (QA(1) AND QA(0) AND NOT QA(2) AND QB(4) AND QB(0) AND QB(2) AND
    QB(3) AND BSIN)); -- Open Drain

    FDCPE_DUMP: FDCPE port map (DUMP,DUMP_D,CLK,'0','0','1');
    DUMP_D <= NOT (((NOT STBY.PIN)
    OR (QB(6) AND QB(4) AND QB(5) AND QB(7)))); -- Open Drain


    N_PZ_135 <= ((QC(0) AND Q05 AND NOT Q02 AND QA(2))
    OR (NOT QC(0) AND Q05 AND Q02 AND QA(2))
    OR (QC(0) AND NOT QA(1) AND NOT QA(0) AND Q05 AND Q02 AND NOT QA(2))
    OR (NOT QC(0) AND NOT QA(1) AND NOT QA(0) AND Q05 AND NOT Q02 AND NOT QA(2)));


    N_PZ_175 <= ((RES AND NOT STBY.PIN)
    OR (RES AND NOT QB(6) AND NOT QB(7)));


    OSCB <= NOT OSCA;

    FDCPE_Q02: FDCPE port map (Q02,NOT DIR,CLK,'0','0',Q02_CE);
    Q02_CE <= (Q03 AND NOT Q04);

    FDCPE_Q03: FDCPE port map (Q03,NOT STP,CLK,'0','0','1');

    FDCPE_Q04: FDCPE port map (Q04,Q03,CLK,'0','0','1');

    FDCPE_Q05: FDCPE port map (Q05,Q05_D,CLK,'0','0','1');
    Q05_D <= (Q03 AND NOT Q04);

    FDCPE_Q10: FDCPE port map (Q10,Q10_D,CLK,'0','0','1');
    Q10_D <= NOT (((NOT Q10 AND AIN)
    OR (QB(6) AND QB(4) AND QB(5) AND QB(7))));

    FDCPE_Q11: FDCPE port map (Q11,Q11_D,CLK,'0','0','1');
    Q11_D <= NOT (((NOT Q11 AND BIN)
    OR (QB(6) AND QB(4) AND QB(5) AND QB(7))));

    FTCPE_QA0: FTCPE port map (QA(0),QA_T(0),CLK,'0','0','1');
    QA_T(0) <= ((NOT RES AND QA(0))
    OR (RES AND NOT N_PZ_135 AND Q05));

    FTCPE_QA1: FTCPE port map (QA(1),QA_T(1),CLK,'0','0','1');
    QA_T(1) <= ((NOT RES AND QA(1))
    OR (QC(0) AND RES AND NOT N_PZ_135 AND QA(0) AND Q05 AND NOT Q02)
    OR (QC(0) AND RES AND NOT N_PZ_135 AND NOT QA(0) AND Q05 AND Q02)
    OR (NOT QC(0) AND RES AND NOT N_PZ_135 AND QA(0) AND Q05 AND Q02)
    OR (NOT QC(0) AND RES AND NOT N_PZ_135 AND NOT QA(0) AND Q05 AND NOT Q02));

    FTCPE_QA2: FTCPE port map (QA(2),QA_T(2),CLK,'0','0','1');
    QA_T(2) <= ((NOT RES AND QA(2))
    OR (NOT N_PZ_135 AND NOT QA(1) AND NOT QA(0) AND Q05 AND QA(2))
    OR (QC(0) AND RES AND NOT N_PZ_135 AND QA(1) AND QA(0) AND Q05 AND
    NOT Q02)
    OR (NOT QC(0) AND RES AND NOT N_PZ_135 AND QA(1) AND QA(0) AND Q05 AND
    Q02));

    FDCPE_QB0: FDCPE port map (QB(0),QB_D(0),CLK,'0','0','1');
    QB_D(0) <= (NOT N_PZ_135 AND NOT QB(0));

    FDCPE_QB1: FDCPE port map (QB(1),QB_D(1),CLK,'0','0','1');
    QB_D(1) <= ((NOT N_PZ_135 AND QB(1) AND NOT QB(0))
    OR (NOT N_PZ_135 AND NOT QB(1) AND QB(0)));

    FDCPE_QB2: FDCPE port map (QB(2),QB_D(2),CLK,'0','0','1');
    QB_D(2) <= (NOT N_PZ_135 AND QB(2))
    XOR (NOT N_PZ_135 AND QB(1) AND QB(0));

    FDCPE_QB3: FDCPE port map (QB(3),QB_D(3),CLK,'0','0','1');
    QB_D(3) <= (NOT N_PZ_135 AND QB(3))
    XOR (NOT N_PZ_135 AND QB(1) AND QB(0) AND QB(2));

    FTCPE_QB4: FTCPE port map (QB(4),QB_T(4),CLK,'0','0','1');
    QB_T(4) <= ((N_PZ_135 AND QB(4))
    OR (NOT N_PZ_135 AND QB(1) AND QB(0) AND QB(2) AND QB(3)));

    FTCPE_QB5: FTCPE port map (QB(5),QB_T(5),CLK,'0','0','1');
    QB_T(5) <= ((N_PZ_135 AND QB(5))
    OR (NOT N_PZ_135 AND QB(4) AND QB(1) AND QB(0) AND QB(2) AND
    QB(3)));

    FTCPE_QB6: FTCPE port map (QB(6),QB_T(6),CLK,'0','0','1');
    QB_T(6) <= ((N_PZ_135 AND QB(6))
    OR (NOT N_PZ_135 AND QB(4) AND QB(1) AND QB(0) AND QB(2) AND
    QB(3) AND QB(5)));

    FTCPE_QB7: FTCPE port map (QB(7),QB_T(7),CLK,'0','0','1');
    QB_T(7) <= ((N_PZ_135 AND QB(7))
    OR (NOT N_PZ_135 AND QB(6) AND QB(4) AND QB(1) AND QB(0) AND
    QB(2) AND QB(3) AND QB(5)));

    FDCPE_QC0: FDCPE port map (QC(0),QC_D(0),CLK,'0','0','1');
    QC_D(0) <= ((QC(0) AND RES AND NOT N_PZ_135)
    OR (NOT QC(0) AND RES AND N_PZ_135));

    FTCPE_QC1: FTCPE port map (QC(1),QC_T(1),CLK,'0','0','1');
    QC_T(1) <= ((NOT RES AND QC(1))
    OR (RES AND N_PZ_135 AND NOT QA(2)));

    FTCPE_QD0: FTCPE port map (QD(0),QD_T(0),CLK,'0','0','1');
    QD_T(0) <= ((Q05 AND QD(0))
    OR (NOT Q05 AND QB(6) AND QB(4) AND QB(1) AND QB(0) AND QB(2) AND
    QB(3) AND QB(5) AND QB(7) AND STBY));

    FTCPE_QD1: FTCPE port map (QD(1),QD_T(1),CLK,'0','0','1');
    QD_T(1) <= ((Q05 AND QD(1))
    OR (NOT Q05 AND QB(6) AND QB(4) AND QB(1) AND QB(0) AND QB(2) AND
    QB(3) AND QB(5) AND QB(7) AND QD(0) AND STBY));

    FTCPE_QD2: FTCPE port map (QD(2),QD_T(2),CLK,'0','0','1');
    QD_T(2) <= ((Q05 AND QD(2))
    OR (NOT Q05 AND QB(6) AND QB(4) AND QB(1) AND QB(0) AND QB(2) AND
    QB(3) AND QB(5) AND QB(7) AND QD(0) AND STBY AND QD(1)));


    STBY <= NOT ((QD(0) AND QD(1) AND QD(2))); -- Open Drain


    Register Legend:
    FDCPE (Q,D,C,CLR,PRE,CE);
    FDDCPE (Q,D,C,CLR,PRE,CE);
    FTCPE (Q,D,C,CLR,PRE,CE);
    FTDCPE (Q,D,C,CLR,PRE,CE);
    LDCP (Q,D,G,CLR,PRE);

    ****************************** Device Pin Out *****************************

    Device : XC2C64A-7-VQ44


    --------------------------------
    /44 43 42 41 40 39 38 37 36 35 34 \
    | 1 33 |
    | 2 32 |
    | 3 31 |
    | 4 30 |
    | 5 XC2C64A-7-VQ44 29 |
    | 6 28 |
    | 7 27 |
    | 8 26 |
    | 9 25 |
    | 10 24 |
    | 11 23 |
    \ 12 13 14 15 16 17 18 19 20 21 22 /
    --------------------------------


    Pin Signal Pin Signal
    No. Name No. Name
    1 KPR 23 KPR
    2 CLK 24 TDO
    3 STBY 25 GND
    4 GND 26 VCCIO-3.3
    5 KPR 27 B0
    6 KPR 28 B1
    7 VCCIO-3.3 29 A0
    8 KPR 30 A1
    9 TDI 31 DUMP
    10 TMS 32 BIN
    11 TCK 33 AIN
    12 BSIN 34 RES
    13 ASIN 35 VCCAUX
    14 KPR 36 KPR
    15 VCC 37 STP
    16 KPR 38 DIR
    17 GND 39 KPR
    18 KPR 40 KPR
    19 KPR 41 KPR
    20 KPR 42 OSCA
    21 KPR 43 OSCB
    22 KPR 44 KPR


    Legend : NC = Not Connected, unbonded pin
    PGND = Unused I/O configured as additional Ground pin
    KPR = Unused I/O with weak keeper (leave unconnected)
    WPU = Unused I/O with weak pull up (leave unconnected)
    TIE = Unused I/O floating -- must tie to VCC, GND or other signal
    VCC = Dedicated Power Pin
    VCCAUX = Power supply for JTAG pins
    VCCIO-3.3 = I/O supply voltage for LVTTL, LVCMOS33, SSTL3_I
    VCCIO-2.5 = I/O supply voltage for LVCMOS25, SSTL2_I
    VCCIO-1.8 = I/O supply voltage for LVCMOS18
    VCCIO-1.5 = I/O supply voltage for LVCMOS15, HSTL_I
    VREF = Reference voltage for indicated input standard
    *VREF = Reference voltage pin selected by software
    GND = Dedicated Ground Pin
    TDI = Test Data In, JTAG pin
    TDO = Test Data Out, JTAG pin
    TCK = Test Clock, JTAG pin
    TMS = Test Mode Select, JTAG pin
    PROHIBITED = User reserved pin
    **************************** Compiler Options ****************************

    Following is a list of all global compiler options used by the fitter run.

    Device(s) Specified : xc2c64a-7-VQ44
    Optimization Method : DENSITY
    Multi-Level Logic Optimization : ON
    Ignore Timing Specifications : OFF
    Default Register Power Up Value : LOW
    Keep User Location Constraints : ON
    What-You-See-Is-What-You-Get : OFF
    Exhaustive Fitting : OFF
    Keep Unused Inputs : OFF
    Slew Rate : FAST
    Set Unused I/O Pin Termination : KEEPER
    Global Clock Optimization : ON
    Global Set/Reset Optimization : ON
    Global Ouput Enable Optimization : ON
    Enable Input Registers : ON
    Function Block Fan-in Limit : 38
    Use DATA_GATE Attribute : ON
    Set Tristate Outputs to Termination Mode : KEEPER
    Default Voltage Standard for All Outputs : LVCMOS18
    Input Limit : 32
    Pterm Limit : 28
    Последний раз редактировалось boldive; 11.12.2009 в 23:29.

  17. #54

    Регистрация
    03.04.2006
    Адрес
    Торонто
    Возраст
    53
    Сообщений
    676
    Что-то не могу разобраться как в ISE Project Navigator запускать симулятор (кажись wave называется).

    Ткните пожалуйста пальцем куда смотреть надо и в какой последовательности.

  18. #55

    Регистрация
    07.01.2008
    Адрес
    Хутор
    Возраст
    46
    Сообщений
    31
    Цитата Сообщение от mura Посмотреть сообщение
    НЕМНОГО теории Верилога, и присланный проект компилится без ошибок.
    Лег в EPM3064, занял 64% - как будет работать посмотрим на праздниках.
    А где то можно глянуть ?

  19. #56

    Регистрация
    13.07.2006
    Адрес
    Харьков, украина
    Возраст
    57
    Сообщений
    928
    Цитата Сообщение от Golum Посмотреть сообщение
    А где то можно глянуть ?



    ***** Project compilation was successful




    ** DEVICE SUMMARY **

    Chip/ Input Output Bidir Shareable
    POF Device Pins Pins Pins LCs Expanders % Utilized

    ustep EPM3064ALC44-4 7 8 1 41 13 64 %

    User Pins: 7 8 1



    Project Information c:\maxplus2\maxwork\g900m\ustep.rpt

    ** AUTO GLOBAL SIGNALS **



    INFO: Signal 'CLK' chosen for auto global Clock


    Project Information c:\maxplus2\maxwork\g900m\ustep.rpt

    ** PIN/LOCATION/CHIP ASSIGNMENTS **

    Actual
    User Assignments
    Assignments (if different) Node Name

    ustep@4 AIN
    ustep@40 ASIN
    ustep@8 A0
    ustep@9 A1
    ustep@5 BIN
    ustep@11 BSIN
    ustep@12 B0
    ustep@14 B1
    ustep@43 CLK
    ustep@6 DIR
    ustep@16 DUMP
    ustep@2 OSCA
    ustep@18 OSCB
    ustep@1 RES
    ustep@19 STBY
    ustep@41 STP


    Project Information c:\maxplus2\maxwork\g900m\ustep.rpt

  20. #57

    Регистрация
    07.01.2008
    Адрес
    Хутор
    Возраст
    46
    Сообщений
    31
    Цитата Сообщение от mura Посмотреть сообщение
    ***** Project compilation was successful


    Project Information c:\maxplus2\maxwork\g900m\ustep.rpt
    а сам проект глянуть можно ? :-)

  21. #58

    Регистрация
    13.07.2006
    Адрес
    Харьков, украина
    Возраст
    57
    Сообщений
    928
    >> а сам проект глянуть можно ? :-) Если Автор не против, то можно.

  22. #59

    Регистрация
    03.04.2006
    Адрес
    Торонто
    Возраст
    53
    Сообщений
    676
    А прочитать первое сообщение в этой теме слабо? Там кстати и код выложен один к одному как я Юрию переслал.

    Для самых ленивых код ниже.
    Юрий, обратите внимание на STBY. Тут он несколько по другому сформирован. Вы не пробовали смотреть на STBY and DUMP в симуляции. Каждые 400us что-то выдается на STBY или код еще сыроват, хоть и работает?

    Вместо смайликов надо подставить B )
    Пробела между ними не должно быть.


    `timescale 1ns / 1ps
    //////////////////////////////////////////////////////////////////////////////////
    // Company:
    // Engineer: Oleg
    //
    // Create Date: 09:45:02 11/04/2009
    // Design Name:
    // Module Name: uStep
    // Project Name:
    // Target Devices: XC2C64A-7VQ44C
    // Tool versions:
    // Description: 80V 8A Stepper Motor Drive
    //
    // Dependencies:
    //
    // Revision:
    // Revision 0.01 - File Created
    // Additional Comments:
    //
    //////////////////////////////////////////////////////////////////////////////////
    module uStep(
    input CLK, AIN, BIN, DIR, STP, OSCA, RES,
    inout STBY,
    output ASIN, BSIN, DUMP, A0, A1, B0, B1, OSC;
    wire [2:0] QA;
    wire [7:0] QB;
    wire [1:0] QC;
    wire [2:0] QD;
    //T_BASE--------------------------------------------------------------------------
    CB8R C03 (.C(CLK), .R(G14), .Q(Q);
    DF F12 (.C(CLK), .D(G24), .R(0), .CE(1), .S(~STBY), .Q(Q12));
    assign DUMP = ~Q12 ? 1'bz : 1'b0;
    assign G24 = QB[7] & QB[6] & QB[5] & QB[4];
    assign OSCB = ~OSCA;
    //PH_GEN--------------------------------------------------------------------------
    DF F02 (.C(CLK), .D(~DIR), .R(0), .S(0), .CE(G16), .Q(Q02));
    DF F03 (.C(CLK), .D(~STP), .R(0), .S(0), .CE(1), .Q(Q03));
    DF F04 (.C(CLK), .D(Q03), .R(0), .S(0), .CE(1), .Q(Q04));
    DF F05 (.C(CLK), .D(G16), .R(0), .S(0), .CE(1), .Q(Q05));
    CB2BRE C00 (.C(CLK), .UD(Q02), .R(~RES), .CE(G14), .Q(QC));
    CB3BRE C01 (.C(CLK), .UD(G13), .R(~RES), .CE(G15), .Q(QA));
    CB3RE C02 (.C(CLK), .R(Q05), .CE(G18), .Q(QD));
    assign G12 = QC[1] ^ QC[0];
    assign G13 = QC[0] ^ Q02;
    assign G11 = ( G13 & QA[2]) | (~G13 & ~QA[2] & ~QA[1] & ~QA[0]);
    assign G14 = G11 & Q05;
    assign G15 = ~G11 & Q05;
    assign G16 = Q03 & ~Q04;
    assign G17 = QD[2] & QD[1] & QD[0];
    assign STBY = G17 ? 1'bz : 1'b0; //assign STBY = ~G17 ? 1'bz : 1'b0;
    assign G18 = ~G17 & QB[7] & QB[6] & QB[5] & QB[4] & QB[3] &QB[2] & QB[1] & QB[0];
    //SIN_COS-------------------------------------------------------------------------
    DF F00 (.C(CLK), .D(G00), .R(G05), .S(0), .CE(1), .Q(Q00));
    DF F01 (.C(CLK), .D(G10), .R(G05), .S(0), .CE(1), .Q(Q01));
    assign G01 = QA[2] & ~QA[1] & ~QA[0] & QB[2] & QB[0];
    assign G02 = ~QA[2] & QA[1] & QA[0] & QB[3] & QB[2] & QB[1] & QB[0];
    assign G03 = ~QA[2] & QA[1] & ~QA[0] & QB[4] & QB[2] & QB[1] & QB[0];
    assign G04 = ~QA[2] & ~QA[1] & QA[0] & QB[4] & QB[3] & QB[2] & QB[0];
    assign G06 = ~QA[2] & ~QA[1] & ~QA[0] & QB[2] & QB[0];
    assign G07 = ~QA[2] & ~QA[1] & QA[0] & QB[3] & QB[2] & QB[1] & QB[0];
    assign G08 = ~QA[2] & QA[1] & ~QA[0] & QB[4] & QB[2] & QB[1] & QB[0];
    assign G09 = ~QA[2] & QA[1] & QA[0] & QB[4] & QB[3] & QB[2] & QB[0];
    assign G00 = Q00 | G01 | G02 | G03 | G04;
    assign G10 = Q01 | G06 | G07 | G08 | G09;
    assign G05 = ~QB[4] & ~QB[3] & ~QB[2] & ~QB[1] & ~QB[0];
    assign BSIN = ~Q01 ? 1'bz : 1'b0;
    assign ASIN = ~Q00 ? 1'bz : 1'b0;
    //PH_DRV----------------------------------------
    DF F06 (.C(CLK), .D(G20), .R(G19), .S(0), .CE(1), .Q(A0));
    DF F07 (.C(CLK), .D(~G20), .R(G19), .S(0), .CE(1), .Q(A1));
    DF F08 (.C(CLK), .D(G22), .R(G19), .S(0), .CE(1), .Q(B0));
    DF F09 (.C(CLK), .D(~G22), .R(G19), .S(0), .CE(1), .Q(B1));
    DF F10 (.C(CLK), .D(G21), .R(G24), .S(0), .CE(1), .Q(Q10));
    DF F11 (.C(CLK), .D(G23), .R(G24), .S(0), .CE(1), .Q(Q11));
    assign G19 = ~RES | (STBY & (QB[7] | QB[6]));
    assign G22 = Q11 ^ QC[1]; //assign G22 = Q11 ^ QD[1];
    assign G23 = Q11 | ~BIN;
    assign G20 = Q10 ^ G12;
    assign G21 = Q10 | ~AIN;
    //the rest of the main module code here:
    endmodule
    /////////////////////////////////////////////////////////////////////////////////-
    module DF (input D, C, CE, R, S, output Q);
    reg df = 0;
    always @(posedge C)
    if (R)
    df <= 1'h0;
    else if (S)
    df <= 1'b1;
    else if (CE)
    df <= D;
    assign Q = df;
    endmodule
    /////////////////////////////////////////////////////////////////////////////////-
    module CB8R (input C, R, output [7:0] Q);
    reg [7:0] count = 0;
    always @(posedge C)
    if (R)
    count <= 0;
    else
    count <= count + 1;
    assign Q = count;
    endmodule
    /////////////////////////////////////////////////////////////////////////////////-
    module CB2BRE (input UD, R, CE, C, output [1:0] Q);
    reg [1:0] u_d = 0;
    always @(posedge C)
    if (R)
    u_d <= 0;
    else if (CE)
    if (UD) begin
    u_d <= u_d + 1;
    end
    else begin
    u_d <= u_d - 1;
    end
    assign Q = u_d;
    endmodule
    //////////////////////////////////////////////my add///////////////////////////////////-
    module CB3BRE (input UD, R, CE, C, output [2:0] Q);
    reg [2:0] u_d = 0;
    always @(posedge C)
    if (R)
    u_d <= 0;
    else if (CE)
    if (UD) begin
    u_d <= u_d + 1;
    end
    else begin
    u_d <= u_d - 1;
    end
    assign Q = u_d;
    endmodule
    ////////////////////////////////////////corrected output [7:0]/////////////////////////////////////////-
    module CB3RE (input C, R, CE, output [2:0] Q);
    reg [2:0] count = 0;
    always @(posedge C)
    if (R)
    count <= 0;
    else if (CE)
    count <= count + 1;
    assign Q = count;
    endmodule
    /////////////////////////////////////////////////////////////////////////////////-

  23. #60

    Регистрация
    07.01.2008
    Адрес
    Хутор
    Возраст
    46
    Сообщений
    31
    Цитата Сообщение от boldive Посмотреть сообщение
    А прочитать первое сообщение в этой теме слабо? Там кстати и код выложен один к одному как я Юрию переслал.
    Я вообще то про проект на Алтере а не на Ксилинке. Товарищ писал что это ему удалось.
    >>Марисс не возражает

  24. #61

    Регистрация
    13.07.2006
    Адрес
    Харьков, украина
    Возраст
    57
    Сообщений
    928
    Вот это компилится Максом.
    //`timescale 1ns / 1ps
    //////////////////////////////////////////////////////////////////////////////////
    // Company:
    // Engineer: Oleg
    //
    // Create Date: 09:45:02 11/04/2009
    // Design Name:
    // Module Name: uStep
    // Project Name:
    // Target Devices: XC2C64A-7VQ44C
    // Tool versions:
    // Description: 80V 8A Stepper Motor Driver
    //
    // Dependencies:
    //
    // Revision:
    // Revision 0.01 - File Created
    // Additional Comments:
    //
    //////////////////////////////////////////////////////////////////////////////////
    module uStep(CLK, AIN, BIN, DIR, STP, OSCA, RES,
    STBY,
    ASIN, BSIN, DUMP, A0, A1, B0, B1, OSC;


    input CLK, AIN, BIN, DIR, STP, OSCA, RES;
    inout STBY;
    output ASIN, BSIN, DUMP, A0, A1, B0, B1, OSCB;
    wire [2:0] QA;
    wire [7:0] QB;
    wire [1:0] QC;
    wire [2:0] QD;
    wire G01,G02,G03,G04,G05,G06,G07,G08,G09;
    wire G11,G12;
    wire G17;
    //T_BASE--------------------------------------------------------------------------
    CB8R C03 (.C(CLK), .R(G14), .Q(Q);
    DF F12 (.C(CLK), .D(G24), .R(0), .CE(1), .S(~STBY), .Q(Q12));
    assign DUMP = ~Q12 ? 1'bz : 1'b0;
    assign G24 = QB[7] & QB[6] & QB[5] & QB[4];
    assign OSCB = ~OSCA;
    //PH_GEN--------------------------------------------------------------------------
    DF F02 (.C(CLK), .D(DIR), .R(0), .S(0), .CE(G16), .Q(Q02));
    DF F03 (.C(CLK), .D(STP), .R(0), .S(0), .CE(1), .Q(Q03));
    DF F04 (.C(CLK), .D(Q03), .R(0), .S(0), .CE(1), .Q(Q04));
    DF F05 (.C(CLK), .D(G16), .R(0), .S(0), .CE(1), .Q(Q05));
    CB2BRE C00 (.C(CLK), .UD(Q02), .R(~RES), .CE(G14), .Q(QC));
    CB3BRE C01 (.C(CLK), .UD(G13), .R(~RES), .CE(G15), .Q(QA));
    CB3RE C02 (.C(CLK), .R(Q05), .CE(G18), .Q(QD));
    assign G12 = QC[1] ^ QC[0];
    assign G13 = QC[0] ^ Q02;
    assign G11 = ( G13 & QA[2]) | (~G13 & ~QA[2] & ~QA[1] & ~QA[0]);
    assign G14 = G11 & Q05;
    assign G15 = ~G11 & Q05;
    assign G16 = Q03 & ~Q04;
    assign G17 = QD[2] & QD[1] & QD[0];
    assign STBY = ~G17 ? 1'bz : 1'b0;
    assign G18 = ~G17 & QB[7] & QB[6] & QB[5] & QB[4] & QB[3] &QB[2] & QB[1] & QB[0];
    //SIN_COS-------------------------------------------------------------------------
    DF F00 (.C(CLK), .D(G00), .R(G05), .S(0), .CE(1), .Q(Q00));
    DF F01 (.C(CLK), .D(G10), .R(G05), .S(0), .CE(1), .Q(Q01));
    assign G01 = QA[2] & ~QA[1] & ~QA[0] & QB[2] & QB[0];
    assign G02 = ~QA[2] & QA[1] & QA[0] & QB[3] & QB[2] & QB[1] & QB[0];
    assign G03 = ~QA[2] & QA[1] & ~QA[0] & QB[4] & QB[2] & QB[1] & QB[0];
    assign G04 = ~QA[2] & ~QA[1] & QA[0] & QB[4] & QB[3] & QB[2] & QB[0];
    assign G06 = ~QA[2] & ~QA[1] & ~QA[0] & QB[2] & QB[0];
    assign G07 = ~QA[2] & ~QA[1] & QA[0] & QB[3] & QB[2] & QB[1] & QB[0];
    assign G08 = ~QA[2] & QA[1] & ~QA[0] & QB[4] & QB[2] & QB[1] & QB[0];
    assign G09 = ~QA[2] & QA[1] & QA[0] & QB[4] & QB[3] & QB[2] & QB[0];
    assign G00 = Q00 | G01 | G02 | G03 | G04;
    assign G10 = Q01 | G06 | G07 | G08 | G09;
    assign G05 = ~QB[4] & ~QB[3] & ~QB[2] & ~QB[1] & ~QB[0];
    assign BSIN = ~Q01 ? 1'bz : 1'b0;
    assign ASIN = ~Q00 ? 1'bz : 1'b0;
    //PH_DRV----------------------------------------
    DF F06 (.C(CLK), .D(G20), .R(G19), .S(0), .CE(1), .Q(A0));
    DF F07 (.C(CLK), .D(~G20), .R(G19), .S(0), .CE(1), .Q(A1));
    DF F08 (.C(CLK), .D(G22), .R(G19), .S(0), .CE(1), .Q(B0));
    DF F09 (.C(CLK), .D(~G22), .R(G19), .S(0), .CE(1), .Q(B1));
    DF F10 (.C(CLK), .D(G21), .R(G24), .S(0), .CE(1), .Q(Q10));
    DF F11 (.C(CLK), .D(G23), .R(G24), .S(0), .CE(1), .Q(Q11));
    assign G19 = ~RES | (STBY & (QB[7] | QB[6]));
    assign G22 = Q11 ^ QC[1]; //assign G22 = Q11 ^ QD[1];
    assign G23 = Q11 | ~BIN;
    assign G20 = Q10 ^ G12;
    assign G21 = Q10 | ~AIN;
    //the rest of the main module code here:
    endmodule
    /////////////////////////////////////////////////////////////////////////////////-
    module DF (D, C, CE, R, S, Q);
    input D, C, CE, R, S;
    output Q;
    reg df;
    always @(posedge C)
    if (R)
    df <= 1'h0;
    else if (S)
    df <= 1'b1;
    else if (CE)
    df <= D;
    assign Q = df;
    endmodule
    /////////////////////////////////////////////////////////////////////////////////-
    module CB8R (C, R, Q);
    input C, R;
    output [7:0] Q;
    reg [7:0] count;
    always @(posedge C)
    if (R)
    count <= 0;
    else
    count <= count + 1;
    assign Q = count;
    endmodule
    /////////////////////////////////////////////////////////////////////////////////-
    module CB2BRE (UD, R, CE, C, Q);
    input UD, R, CE, C;
    output [1:0] Q;
    reg [1:0] u_d;
    always @(posedge C)
    if (R)
    u_d <= 0;
    else if (CE)
    if (UD) begin
    u_d <= u_d + 1;
    end
    else begin
    u_d <= u_d - 1;
    end
    assign Q = u_d;
    endmodule
    //////////////////////////////////////////////my add///////////////////////////////////-
    module CB3BRE (UD, R, CE, C, Q);
    input UD, R, CE, C;
    output [2:0] Q;

    reg [2:0] u_d;
    always @(posedge C)
    if (R)
    u_d <= 0;
    else if (CE)
    if (UD) begin
    u_d <= u_d + 1;
    end
    else begin
    u_d <= u_d - 1;
    end
    assign Q = u_d;
    endmodule
    ////////////////////////////////////////corrected output [7:0]/////////////////////////////////////////-
    module CB3RE (C, R, CE, Q);
    input C, R, CE;
    output [2:0] Q;
    reg [2:0] count;
    always @(posedge C)
    if (R)
    count <= 0;
    else if (CE)
    count <= count + 1;
    assign Q = count;
    endmodule
    /////////////////////////////////////////////////////////////////////////////////-

  25. #62

    Регистрация
    07.01.2008
    Адрес
    Хутор
    Возраст
    46
    Сообщений
    31
    Цитата Сообщение от mura Посмотреть сообщение
    Вот это компилится Максом.
    ага, пасиб, вижу что синтаксис чуть отличается, сейчас тоже в макс попробую засунуть

  26. #63

    Регистрация
    13.07.2006
    Адрес
    Харьков, украина
    Возраст
    57
    Сообщений
    928
    Анатолий, даже в самые отдаленные хутора пришла программируемая логика.
    Пора начинать

  27. #64

    Регистрация
    07.01.2008
    Адрес
    Хутор
    Возраст
    46
    Сообщений
    31
    Цитата Сообщение от mura Посмотреть сообщение
    Пора начинать
    ну, то быстрее паяльник разогреет ? В)

  28. #65

    Регистрация
    22.03.2006
    Адрес
    Железногорск
    Возраст
    61
    Сообщений
    827
    Цитата Сообщение от mura Посмотреть сообщение
    Анатолий, даже в самые отдаленные хутора пришла программируемая логика.
    Пора начинать
    Не, я сейчас все больше в Компасе - железяки пытаюсь изобретать, как ни противно это моей натуре. Надеюсь, в январе что-нибудь начнут точить-фрезеровать, а я, тем временем, буду дальше грызть управляющую программу.
    Так что до ПЛИС руки, боюсь, не скоро дойдут: нет у меня для них актуальной задачи, так чтобы без них - невмоготу.

  29. #66

    Регистрация
    03.04.2006
    Адрес
    Торонто
    Возраст
    53
    Сообщений
    676
    Юрий, есть прогресс в моделировании?

    Вот тут еще немножко теории как это сделано у Марисса.

    Можете поделится кодом testbench для этого дела?

  30. #67

    Регистрация
    21.02.2006
    Адрес
    Москва, Зеленоград
    Возраст
    36
    Сообщений
    3,386
    Цитата Сообщение от boldive Посмотреть сообщение
    Что-то не могу разобраться как в ISE Project Navigator запускать симулятор (кажись wave называется).

    Ткните пожалуйста пальцем куда смотреть надо и в какой последовательности.
    луше сразу привыкайте к хорошему: Active HDL рулит.

  31. #68

    Регистрация
    03.04.2006
    Адрес
    Торонто
    Возраст
    53
    Сообщений
    676
    Цитата Сообщение от tumbzik Посмотреть сообщение
    луше сразу привыкайте к хорошему: Active HDL рулит.
    Так вроде как и ModelsimXE с ISE работает без вопросов.

  32. #69

    Регистрация
    13.07.2006
    Адрес
    Харьков, украина
    Возраст
    57
    Сообщений
    928
    Цитата Сообщение от tumbzik Посмотреть сообщение
    луше сразу привыкайте к хорошему: Active HDL рулит.
    Cразу видно, человек КИТа начитался.

  33. #70

    Регистрация
    03.04.2006
    Адрес
    Торонто
    Возраст
    53
    Сообщений
    676
    to mura
    Юрий, так как насчет содержания моего поста

    Юрий, есть прогресс в моделировании?

    Вот тут еще немножко теории как это сделано у Марисса.

    Можете поделится кодом testbench для этого дела?

  34. #71

    Регистрация
    13.07.2006
    Адрес
    Харьков, украина
    Возраст
    57
    Сообщений
    928
    Cкоро начну "боевые" испытания. А тесткод не писал, в МАКсе удобный симулятор, и там все задается графически.

  35. #72

    Регистрация
    07.11.2009
    Адрес
    Донецк,украина
    Возраст
    33
    Сообщений
    79
    Интерестно,как обстоят дела с драйвером....и подскажите boldive ,по Вашему мнению какой драйвер будет лучше: 1)на LS8290 или 2)на Xilinx CPLD

  36. #73

    Регистрация
    03.04.2006
    Адрес
    Торонто
    Возраст
    53
    Сообщений
    676
    Разумеется на CPLD, только там код надо слегка до ума довести.

  37. #74

    Регистрация
    29.09.2005
    Адрес
    Николаев украина
    Возраст
    66
    Сообщений
    651
    Ээээ... Народ, подскажите, нашел тут Xilinx ISE Design Suite v11.1 весит 5,6Гб и пакет обновлений до 11.4 2,5Гб Это чо неполная? В первых постах речь шла о 47Гб?

  38. #75

    Регистрация
    03.04.2006
    Адрес
    Торонто
    Возраст
    53
    Сообщений
    676
    Все правильно. Так и есть. Только ко всему этому надо еще впридачу с сайта Xilinx скачать Modelsim 6.4 с библиотеками под CPLD (хотя по умолчанию там эти библиотеки уже сидят). Регистрационный код получите там-же бесплатно.

  39. #76

    Регистрация
    07.11.2009
    Адрес
    Донецк,украина
    Возраст
    33
    Сообщений
    79
    Так тогда два вопроса :1)А что с кодом именно не так? 2)топологию платы брали с сайта или сами разводили?

  40. #77

    Регистрация
    03.04.2006
    Адрес
    Торонто
    Возраст
    53
    Сообщений
    676
    1. 1/5 шага заявленная в проекте работает. Но это хорошо для изучения процесса. Желательно сделать его меняющим шаг в зависимости от частоты оборотов двигателя и начинать вращение где-то с 1/16 шага.

    2. Топология платы своя. Долго пыхтел, но сделал.

  41. #78

    Регистрация
    07.03.2010
    Адрес
    Kharkov
    Возраст
    45
    Сообщений
    5
    Схему как файл прикреплять уже нельзя. Кому надо текущий вариант схемы берем тут.[/QUOTE]

    Тоже хочу собрать контролер с ПЛМ разобрался, счас копаю аналоговую часть.

    1.не могу монять почему на схеме резистор R40 0.05ом -это при токе 65А даст на компараторах 3.3в , на 3,5 ноге LM393 напряжение должно менятся от 0 до 3.3В. у вас что двигатель потребляет 65А? + перед компаратором лучше поставить усилитель напряжения с регулируемой обратной связью чтоб можно было ток менять.

    2 что за хитрый у вас источник тока для asin

    с помехами разобрались при высоком напряжении? , у меня будет в районе 90в.

  42. #79

    Регистрация
    03.04.2006
    Адрес
    Торонто
    Возраст
    53
    Сообщений
    676
    1. Откуда 65А ? Вроде такие цифры никогда не озвучивались. Я так думаю 7-8А это то что схема выдаст. R1 и есть то что меняет максимальный ток обмоток мотора. Примерно 1к на 1А. Т.е. при токе 4А надо ставить 4К. Если ничего не поставить в качестве R1 (оборвать) то схема сама ограничит ток до ~7А (R2).
    2. Кто то невнимательно прочитал tutorial. Или совсем его не читал. ASIN and BSIN это выходы CPLD с открытым коллектором (Z-level). Грубо говоря закорачиваются ASIN and BSIN на минус питания. В зависимости от "длительности" закорачивания и получается синусоида на компараторе.

    С помехами еще воюю. У меня токи 7-8А 48VDC. Если будет 90В питания то IRF540N не подойдут. У них максимум 100В. А поскольку силовая часть работает в импульсном режиме на индуктивную нагрузку то выбросы напряжения будут вольт так под 160 если не больше.

    Помехозащищенность очень сильно зависит от топологии печатной платы. С двухсторонней платой очень трудно защититься от токов 7-8А. Уже подумываю прилепить медный экран сверху CPLD и компаратора (закрыть всю несиловую часть).

  43. #80

    Регистрация
    07.03.2010
    Адрес
    Kharkov
    Возраст
    45
    Сообщений
    5
    меня поначалу запутало то что в первоисточнике было указано curent set- думал стабилизатор тока пока не увидел конденсатор 1мф.

    Разобрался с вашей схемой на транзисторах Q1-Q3 На Q1-источник тока, Q2 просто напряжение падает , Q3- эмитерный повторитель, в итоге получаем простой стабилизатор напряжения регулируемый 2 резисторами (отсюда вопрос зачем такой изврат)

    Раньше я занимался проектированием импульсных источников питания поэтому в борьбе с помехами знаю толк. ваша схема может и будет работать в четырехслойной плате, если повезет. у вас на компараторе сравниваются миливольты (50mv) это сопоставимо с наводимыми помехами. надо усиливать сигнал c резистора R39 R40 хотябы до вольт 3-4 (усилитель рядом с резистором R39) и на R4-R5 подавать такое же напряжение. самое главное обратную связь правильно развести (цепи компаратора) на осцилографе все хорошо будет видно. микросхема вроде и на 5 в расчитана , наверное можно подать на С3 и 5в.
    посмотрите как сделан усилитель тока у http://robozone.su/uploads/posts/201...808176_sch.jpg

    у меня в бп по 600в с токами 3а коммутировалось на 1 слойной плате и ничего, помех никаких небыло, сигнал был намного чище чем в серийных изделиях.
    Последний раз редактировалось andrey_als76; 09.03.2010 в 01:29.

Закрытая тема

Похожие темы

  1. MotoCalc vs Drive Calculator
    от spyder3 в разделе Самодельная электроника, компьютерные программы
    Ответов: 1
    Последнее сообщение: 22.03.2010, 00:40
  2. Ответов: 2
    Последнее сообщение: 14.06.2009, 23:39
  3. Gearless direct drive motor for helicopter
    от ron_van_sommeren в разделе Электродвигатели, регуляторы, мотоустановки
    Ответов: 2
    Последнее сообщение: 22.03.2004, 17:31

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения