i.dmitry
Участник-
Постов
35 -
Зарегистрирован
-
Посещение
Репутация
0 ОбычныйИнформация о i.dmitry
-
Звание
Участник
- День рождения 18.08.1983
Контакты
-
Сайт
Array
Посетители профиля
-
дискретиз низкочастотных сигналов
i.dmitry ответил i.dmitry тема в Алгоритмы ЦОС (DSP)
я так и не понял, почему происходит то, что в синих скобках на моем рисунке -
дискретиз низкочастотных сигналов
i.dmitry опубликовал тема в Алгоритмы ЦОС (DSP)
прошу помощи в понимании (студент). Я понимаю, что дискретизация сигнала с частотой Fs>2*Fmax, позволяет избежать наложений копий полезного сигнала "на себя", но почему все другие спектральные компоненты (> 2fmax) попадают в нужную полосу? -спасибо -
констрейнт
i.dmitry опубликовал тема в Работаем с ПЛИС, области применения, выбор
На сколько я понял, Multi-cycle path это путь от регистра к регистру, разделенный комбинационной логикой, задержка сигнала через которую - больше периода клока. У меня как раз такая ситуация. Не укладываюсь по частоте. Конвеер организавать врядли получится, хотя возможно. Хочу синтезатору сказать, что собсвенно есть у меня такой путь. цитата из едаборд.ком: вот возникли 2 вопроса: 1) что сделает синтезатор, увидив такой констрейнт 2) потребуется ли от меня менять логику, после указания этого контрейна. что-то смущает выделенная фраза из цитаты. - спасибо -
накопить данные
i.dmitry опубликовал тема в Языки проектирования на ПЛИС (FPGA)
подскажите как сделать лучше: на входе байт 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]}; как это описать в виде сдвигового регистра? -
подключение библиотек
i.dmitry ответил i.dmitry тема в Среды разработки - обсуждаем САПРы
попробовал главное, то что по тдельности какждая из них подключается получилось надо было убрать скобки { } -
подключение библиотек
i.dmitry опубликовал тема в Среды разработки - обсуждаем САПРы
помогите решить проблему. нужно подключить 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 то все окай! как быть? -
timer0 interrupt
i.dmitry ответил i.dmitry тема в В помощь начинающему
сделал, как вы советовали. нет, не зависает. нормально мигает. это как? вместо 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 -
timer0 interrupt
i.dmitry ответил i.dmitry тема в В помощь начинающему
стартап я не менял, значит не разрешил скорее всего, потолму чот не знаю как. подскажите плиз где это нужно сделать в стартапе? -
timer0 interrupt
i.dmitry ответил i.dmitry тема в В помощь начинающему
а почему неверный? что тогда делает следующая строчка: 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 -
timer0 interrupt
i.dmitry ответил i.dmitry тема в В помощь начинающему
я скопировал эту часть кода пару раз в начало программы до бесконечного цикла. светодиод мигнул пару раз примерно на 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 } но он не подает признаков жизни в этом случае, значит наверное не происходит входа в функции обработчик прерывания -
timer0 interrupt
i.dmitry ответил i.dmitry тема в В помощь начинающему
вроде бы разрешил: VICIntEnable = TIMER0_INT; -
timer0 interrupt
i.dmitry опубликовал тема в В помощь начинающему
исходные данные: плата 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 должен мигнуть. но этого не происходит ... в чем проблема - понять не могу. -
define
i.dmitry ответил i.dmitry тема в В помощь начинающему
а почему тогда type.h в окне Project Workspace виден в каждом файле, где он включен в include секцию? Ведь в файле прописано Или это связано не с СИ, а с настройками среды? Почему-то в проектах от Keil, я вобще не вижу подключенных ***.h. -
define
i.dmitry опубликовал тема в В помощь начинающему
скажите вкратце, какой смысл писать в хидерах в начале: #ifndef __XXX #define __XXX и в конце #endif ? -
структуры и указатели
i.dmitry ответил AD_Wolf тема в В помощь начинающему
ааа точно 3 лонга, это же HEX ( 0xE01FC040 - 0xE01FC004 ) = 3С/4 = F т.е. 15 volatile unsigned char