Перейти к содержанию
    

i.dmitry

Участник
  • Постов

    35
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о i.dmitry

  • Звание
    Участник
    Участник
  • День рождения 18.08.1983

Контакты

  • Сайт
    Array

Посетители профиля

790 просмотров профиля
  • svn79

  1. я так и не понял, почему происходит то, что в синих скобках на моем рисунке
  2. прошу помощи в понимании (студент). Я понимаю, что дискретизация сигнала с частотой Fs>2*Fmax, позволяет избежать наложений копий полезного сигнала "на себя", но почему все другие спектральные компоненты (> 2fmax) попадают в нужную полосу? -спасибо
  3. На сколько я понял, Multi-cycle path это путь от регистра к регистру, разделенный комбинационной логикой, задержка сигнала через которую - больше периода клока. У меня как раз такая ситуация. Не укладываюсь по частоте. Конвеер организавать врядли получится, хотя возможно. Хочу синтезатору сказать, что собсвенно есть у меня такой путь. цитата из едаборд.ком: вот возникли 2 вопроса: 1) что сделает синтезатор, увидив такой констрейнт 2) потребуется ли от меня менять логику, после указания этого контрейна. что-то смущает выделенная фраза из цитаты. - спасибо
  4. подскажите как сделать лучше: на входе байт i_data, нужно накопить 17 бит. сделал так: always @(posedge i_clk or posedge i_rst) begin if (rst) begin data_1d <= 8'h00; data_2d <= 8'h00; data_3d <= 8'h00; end else if (i_ce) begin data_1d <= i_data; data_2d <= data_d1; data_3d <= data_d2; end end assign data_bus = {data_3d, data_2d, data_1d[7]}; как это описать в виде сдвигового регистра?
  5. попробовал главное, то что по тдельности какждая из них подключается получилось надо было убрать скобки { }
  6. помогите решить проблему. нужно подключить 2 библиотеки юнисим и корген от ксалинкса. написал bat файлик: C:\Modeltech_6.1d\win32\vsim -L {C:/Modeltech_6.1d/Xilinx/unisims_ver} {C:/Modeltech_6.1d/Xilinx/XilinxCoreLib_ver} +notimingchecks +nowarnTFMPC +nowarnTSCALE -noglitch -t ps tb_i2c_rx в ответ получаю: если пишу только одну библиотеку, например: C:\Modeltech_6.1d\win32\vsim -L C:/Modeltech_6.1d/Xilinx/unisims_ver +notimingchecks +nowarnTFMPC +nowarnTSCALE -noglitch -t ps tb_i2c_rx то все окай! как быть?
  7. сделал, как вы советовали. нет, не зависает. нормально мигает. это как? вместо IO0CLR = LED; //turn on LED Soft_Delay(DELAY); //delay IO0SET = LED; //turn off LED Soft_Delay(DELAY); //delay сделать так: static DWORD tmp = LED; - объявить глобально а в обраб. прерывания: __irq void IRQ_Handler(void) { //Blink(); // LED Blink ~0.5 sec tmp = ~tmp; IO0CLR = tmp; IO0SET = ~tmp; T0IR = 0x00; // Clear the interrupt flag } это нужно разрешать в стартапе как я понял из предыдущих постов. может кто-нибудь ткнуть пальцем в мой стартап где это сделано? я постараюсь разобраться. я ошибся в предыдущем посте. в стартапе было написано FIQ_Addr DCD FIQ_Handler а у меня в коде IRQ_Handler. это изменил. далее в бесконечный цикл поставил мигание диода. запустил. диод начал мигать. дальше перестал. 2) я закоментировал прототип обработчика и саму функцию обработчика. результат - тот же. мигал, потом перестал. пото м я закоментировал еще и это VICIntSelect = TIMER0_INT; //assign TIMER0 intterupt to FIQ category VICIntEnable = TIMER0_INT; //Enable TIMER0 interrupt и он начал мигать без сбоев. что-от происходит при входе в прерыванеи навернео led2.rar
  8. стартап я не менял, значит не разрешил скорее всего, потолму чот не знаю как. подскажите плиз где это нужно сделать в стартапе?
  9. а почему неверный? что тогда делает следующая строчка: VICIntEnable = TIMER0_INT; как я понял это Interrupt Enable Register. startup я взял готовый из сборки code.bundle.lpc213x.lpc214x.uvision.zip готовых примеров. судя по тому, что там написано, то все должно быть правильно наверное. я со стартапом столкнулся в первый раз, если что-то не так, то скажите, пожалуйсто, где нужно прочитать об этом // Pre-defined interrupt handlers that may be directly // overwritten by C interrupt functions EXTERN CODE32 (Undef_Handler?A) EXTERN CODE32 (SWI_Handler?A) EXTERN CODE32 (PAbt_Handler?A) EXTERN CODE32 (DAbt_Handler?A) EXTERN CODE32 (IRQ_Handler?A) EXTERN CODE32 (FIQ_Handler?A) // Exception Vectors // Mapped to Address 0. // Absolute addressing mode must be used. Vectors: LDR PC,Reset_Addr LDR PC,Undef_Addr LDR PC,SWI_Addr LDR PC,PAbt_Addr LDR PC,DAbt_Addr NOP /* Reserved Vector */ ; LDR PC,IRQ_Addr LDR PC,[PC, #-0x0FF0] /* Vector from VicVectAddr */ LDR PC,FIQ_Addr Reset_Addr: DD Reset_Handler Undef_Addr: DD Undef_Handler?A SWI_Addr: DD SWI_Handler?A PAbt_Addr: DD PAbt_Handler?A DAbt_Addr: DD DAbt_Handler?A DD 0 /* Reserved Address */ IRQ_Addr: DD IRQ_Handler?A FIQ_Addr: DD FIQ_Handler?A насколько я понял это, то что мне надо... LDR PC,FIQ_Addr FIQ_Addr: DD FIQ_Handler?A
  10. я скопировал эту часть кода пару раз в начало программы до бесконечного цикла. светодиод мигнул пару раз примерно на 1.5 сек. так что задержка вполне нормальная. IO0CLR=LED; // turn ON LED Soft_Delay(10000000); // delay IO0SET=LED; // turn OFF LED далее я изменил функции следующим образом, чтобы как только произошло прерывание, он в нем и остался и диод горел бы: //interupt handler function __irq void FIQ_Handler (void) { IO0CLR=LED; // turn ON LED // Soft_Delay(10000000); // delay // IO0SET=LED; // turn OFF LED // T0IR = 0x00; // Clear the interrupt flag } но он не подает признаков жизни в этом случае, значит наверное не происходит входа в функции обработчик прерывания
  11. вроде бы разрешил: VICIntEnable = TIMER0_INT;
  12. исходные данные: плата Olimex LPC-P2148 cpu: lpc2148 хочу: мигать светодиодом каждые 2 секунды по прерыванию от таймера 0 результат: вообще ничего не происходит (не мигает) код задержки void Soft_Delay (DWORD N) { volatile DWORD i; for (i=0; i<N; i++) { ; } return; } код main: //****************************************************************************** // GLOBAL DEFINITIONS //****************************************************************************** #define TIMER0_INT 0x00000010 #define LED 0x00000400 // P0.10 pin #define PRESCALE_VAL 0x0001869F // TC increments on every 100000 PCLK #define MATCH_VAL 0x00000078 // Match on 120 value (decimal) #define MATCH_CONFIG 0x0003 // Interrupt on MR0; Reset on MR0 //****************************************************************************** // FUNCTION PROTOTYPE //****************************************************************************** __irq void FIQ_Handler (void); //****************************************************************************** // CODE //****************************************************************************** int main() { //Fosc = 12 MHz Init_PLL(0x42, 0x00); // CCLK = 2*Fosc = 24 MHz; PCLK = CCLK / 4 = 6 MHz IO0DIR=LED; // Set P0.10 as output IO0SET=LED; // initially turn OFF LED Init_Timer(PRESCALE_VAL, MATCH_VAL, MATCH_CONFIG); Enable_Timer(0x00); // Timer 0 enable VICIntSelect = TIMER0_INT; //assign TIMER0 intterupt to FIQ category VICIntEnable = TIMER0_INT; //Enable TIMER0 interrupt while(1) { ; } } //interupt handler function __irq void FIQ_Handler (void) { IO0CLR=LED; // turn ON LED Soft_Delay(10000000); // delay IO0SET=LED; // turn OFF LED T0IR = 0x00; // Clear the interrupt flag } код PLL_Init void Init_PLL (BYTE MP_Mask, BYTE PCLK_Mask) { //set multiplier and divider of the PLL0 PLL0CFG = MP_Mask; //enable PLL0 PLL0CON = 0x1; //provide feed sequence PLL0FEED = 0xAA; PLL0FEED = 0x55; //wait until PLL0 is locked while (!(PLL0STAT & PLL0_LOCKED)) { ; } //connect PLL0 PLL0CON = 0x3; //provide feed sequence PLL0FEED = 0xAA; PLL0FEED = 0x55; //set peripheral clock VPBDIV = PCLK_Mask; return; } Init_timer: void Init_Timer(DWORD Prescale_Val, DWORD Match_Val, WORD Match_Config) { T0PR = Prescale_Val; T0MR0 = Match_Val; T0MCR = Match_Config; return; } void Enable_Timer(BYTE Timer_Num) { if (Timer_Num==0) { T0TCR = 0x01; } else { T1TCR = 0x01; } return; } PCLK настроил на 6 МГц (VPBDIV=0 --> pclk=0.25*cclk), в таймере Prescale настроил на 100000 чтобы счетчик считал с частотой 60 Герц (6MHz/100000), в MR записал 120 (120/60 = 2 сек), т.е. каждые 2 секнды должно быть прерывание по таймеру 0 и LED должен мигнуть. но этого не происходит ... в чем проблема - понять не могу.
  13. а почему тогда type.h в окне Project Workspace виден в каждом файле, где он включен в include секцию? Ведь в файле прописано Или это связано не с СИ, а с настройками среды? Почему-то в проектах от Keil, я вобще не вижу подключенных ***.h.
  14. define

    скажите вкратце, какой смысл писать в хидерах в начале: #ifndef __XXX #define __XXX и в конце #endif ?
  15. ааа точно 3 лонга, это же HEX ( 0xE01FC040 - 0xE01FC004 ) = 3С/4 = F т.е. 15 volatile unsigned char
×
×
  • Создать...