Jump to content

    

jenya7

Участник
  • Content Count

    3102
  • Joined

  • Last visited

Community Reputation

0 Обычный

About jenya7

  • Rank
    Гуру

Recent Profile Visitors

7806 profile views
  1. Не запускается зараза. Инициализация такая Для проверки посылаю UDP пакеты но не попадаю в прерывание void ETH_IRQHandler(void) { /* Handles all the received frames */ while(ETH_GetRxPktSize() != 0) { LwIP_Pkt_Handle(); } /* Clear the Eth DMA Rx IT pending bits */ ETH_DMAClearITPendingBit(ETH_DMA_IT_R); ETH_DMAClearITPendingBit(ETH_DMA_IT_NIS); } Плата GoldBull. JP2 - 2-3 JP6 - 2-3 JP7 - 1-2 JP8 - 2-3 J12 - OPEN Я что то упустил? Лампочка линк горит и активити мигает - значит PHY что то принимает. GoldBull.pdf
  2. убедитесь что вы правильно определили функции чтения записи (в wizchip_conf.c). у меня например так void wizchip_cs_select(void) { SPI_CS_LO; } void wizchip_cs_deselect(void) { SPI_CS_HI; } uint8_t wizchip_spi_readbyte(void) { uint8_t data = SPI_TransferByte(SPI1, 0x00); return data; } void wizchip_spi_writebyte(uint8_t wb) { SPI_TransferByte(SPI1, wb); } void wizchip_spi_readburst(uint8_t* pBuf, uint16_t len) { SPI_ReadBuffer(SPI1, pBuf, len); } void wizchip_spi_writeburst(uint8_t* pBuf, uint16_t len) { SPI_WriteBuffer(SPI1, pBuf, len); } если ф-ции и SPI определены правильно проблем быть не должно. ну и запустите WIZNET_Init() вначале.
  3. да. работает! signal log_data : array_prog_data; attribute noprune: boolean; attribute noprune of log_data: signal is true; и я вижу все 20 каналов - log_data(0) - log_data(20). чтож я раньше так мучался :))
  4. process (CLK) variable l_idx : integer range 0 to 20 := 0; variable r_idx : integer range 0 to 20 := 0; variable l_num : std_logic_vector(4 downto 0); variable r_num : std_logic_vector(4 downto 0); begin if (rising_edge(CLK)) then case LoggerState is when ST_IDLE => if (trig_3 = '1') then LoggerState <= ST_LOG_1; new_log <= '0'; end if; when ST_LOG_1 => if (ms_counter >= X"32") then l_idx := to_integer(unsigned(PROGRAM(5 downto 1))); r_idx := to_integer(unsigned(PROGRAM(10 downto 6))); LoggerState <= ST_LOG_2; end if; when ST_LOG_2 => new_log <= '1'; if (l_idx > 0 and l_idx < 20) then log_data(l_idx).L_ADC_VAL_3MS <= L_ADC_VAL_3MS; log_data(l_idx).L_ADC_VAL_6MS <= L_ADC_VAL_6MS; log_data(l_idx).L_ADC_VAL_9MS <= L_ADC_VAL_9MS; log_data(l_idx).L_ADC_VAL_12MS <= L_ADC_VAL_12MS; log_data(l_idx).L_DAC_VAL_1 <= L_DAC_VAL_1; log_data(l_idx).L_DAC_VAL_2 <= L_DAC_VAL_2; log_data(l_idx).L_DAC_VAL_3 <= L_DAC_VAL_3; log_data(l_idx).L_TUBE_NUM <= t_num_l; end if; if (r_idx > 0 and r_idx < 20) then log_data(r_idx).R_ADC_VAL_3MS <= R_ADC_VAL_3MS; log_data(r_idx).R_ADC_VAL_6MS <= R_ADC_VAL_6MS; log_data(r_idx).R_ADC_VAL_9MS <= R_ADC_VAL_9MS; log_data(r_idx).R_ADC_VAL_12MS <= R_ADC_VAL_12MS; log_data(r_idx).R_DAC_VAL_1 <= R_DAC_VAL_1; log_data(r_idx).R_DAC_VAL_2 <= R_DAC_VAL_2; log_data(r_idx).R_DAC_VAL_3 <= R_DAC_VAL_3; log_data(r_idx).R_TUBE_NUM <= t_num_r; end if; LoggerState <= ST_IDLE; when others => LoggerState <= ST_IDLE; end case; end if; end process; вроде всё нормально.
  5. SignalTap не видит мой log_data type array_prog_data is array (0 to 20) of PROG_DATA; signal log_data : array_prog_data; без этого теряется весь смысл логирования.
  6. спасибо. а это вообще нормально работать с таким типом? или это только для тестбенч подходит?
  7. у меня есть данные которые я хочу логировать для отладки L_ADC_VAL_3MS : out std_logic_vector(17 downto 0); L_ADC_VAL_6MS : out std_logic_vector(17 downto 0); L_ADC_VAL_9MS : out std_logic_vector(17 downto 0); L_ADC_VAL_12MS : out std_logic_vector(17 downto 0); R_ADC_VAL_3MS : out std_logic_vector(17 downto 0); R_ADC_VAL_6MS : out std_logic_vector(17 downto 0); R_ADC_VAL_9MS : out std_logic_vector(17 downto 0); R_ADC_VAL_12MS : out std_logic_vector(17 downto 0); L_DAC_VAL_1 : in std_logic_vector(15 downto 0); L_DAC_VAL_2 : in std_logic_vector(15 downto 0); L_DAC_VAL_3 : in std_logic_vector(15 downto 0); R_DAC_VAL_1 : in std_logic_vector(15 downto 0); R_DAC_VAL_2 : in std_logic_vector(15 downto 0); R_DAC_VAL_3 : in std_logic_vector(15 downto 0); но у меня 20 таких каналов. я подумал сделать так type TUBE_DATA is record L_ADC_VAL_3MS : std_logic_vector(17 downto 0); L_ADC_VAL_6MS : std_logic_vector(17 downto 0); L_ADC_VAL_9MS : std_logic_vector(17 downto 0); L_ADC_VAL_12MS : std_logic_vector(17 downto 0); R_ADC_VAL_3MS : std_logic_vector(17 downto 0); R_ADC_VAL_6MS : std_logic_vector(17 downto 0); R_ADC_VAL_9MS : std_logic_vector(17 downto 0); R_ADC_VAL_12MS : std_logic_vector(17 downto 0); L_DAC_VAL_1 : std_logic_vector(15 downto 0); L_DAC_VAL_2 : std_logic_vector(15 downto 0); L_DAC_VAL_3 : std_logic_vector(15 downto 0); R_DAC_VAL_1 : std_logic_vector(15 downto 0); R_DAC_VAL_2 : std_logic_vector(15 downto 0); R_DAC_VAL_3 : std_logic_vector(15 downto 0); end record TUBE_DATA; type array_tube_data is array (0 to 20) of TUBE_DATA; и потом по индексу логировать соответсвующий канал. так вообще можно делать?
  8. Tools-> NuGet Package Manager -> Manage NuGet Packages for Solution в поиске забиваете Naudio и инсталируете. все dll портируются в ваш проект. ну и в файле где хотите использовать using NAudio; using NAudio.Wave; using NAudio.CoreAudioApi;
  9. такая беда. Main проект начинается с адреса 0х5000 MEMORY { m_interrupts (RX) : ORIGIN = 0x00005000, LENGTH = 0x000001E8 m_text (RX) : ORIGIN = 0x00005410, LENGTH = 0x000FABF0 m_data (RW) : ORIGIN = 0x1FFF0000, LENGTH = 0x00010000 m_data_20000000 (RW) : ORIGIN = 0x20000000, LENGTH = 0x00010000 /*m_cfmprotrom (RX) : ORIGIN = 0x00000400, LENGTH = 0x00000010*/ } генерирую bin файл в KDS. в bin файле тоже сдвиг - Main начинается с 0х5000. вырезаю лишний кусок и прожигаю с адреса 0х5000. всё прожигается но Main проект не бежит. смотрел другие проекты в другой среде разработки - там bin файл начинается с 0. что там надо подшаманить в KDS?
  10. есть библиотека Naudio. В C# выходной поток можно получить так MMDevice mm_dev; private void MainForm_Load(object sender, EventArgs e) { if (OutputDevice.DeviceCount > 0) { outDevice = new OutputDevice(0); MMDeviceEnumerator enumerator = new MMDeviceEnumerator(); //my sound card mm_dev = enumerator.EnumerateAudioEndPoints(DataFlow.All, DeviceState.Active)[0]; loopback_capture = new WasapiLoopbackCapture(mm_dev); loopback_capture.DataAvailable += Loopback_capture_DataAvailable; loopback_capture.RecordingStopped += Loopback_capture_RecordingStopped; wave_writer = new WaveFileWriter(full_file_path, waveInStream.WaveFormat); } } private void Loopback_capture_DataAvailable(object sender, WaveInEventArgs e) { wave_writer.Write(e.Buffer, 0, e.BytesRecorded); }
  11. я добавил опцию прожига FPGA, отображение на дисплее, ну и всякие фичеры, мало помалу код раздулся почти в два раза. я лично доволен кинетисами, вся периферия работает чётко и есть полезные фичеры которые мы используем, такие как криптография и аппаратный CRC.
  12. блиииин. вот я лох. оригинальный булодер - 9к. А я свой раздул до 17к. Естественно я затирал часть програмы. Нужно сдвинуть RELOCATION_VERTOR_ADDR = 0x05000.