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

D-Luxe

Свой
  • Постов

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

  • Посещение

Весь контент D-Luxe


  1. Какое расширение имеет файл прошивки ПЛИС в среде Quartus II ??? У Xilinx файл прошивки имеет расширение - *.bit.
  2. Как в оптике передавать 3 потока данных: 1) TDM трафик 2) ETHERNET трафик 3) асинхронный канал UART ? Каким способом осуществляется передача ? Как делают умные люди ? Сильно не пинайте.
  3. Есть ли Ip Core для работы по Uart'у в плисах фирмы Altera ???
  4. Как осуществляется работа по SFP ( оптическим приемопередатчикам ) в ПЛИСах фирмы Altera ??? Есть ли IP Core для работы по SFP ???
  5. Где можно скачать сам IP core Triple Speed Ethernet ??? В интернете не нашел.
  6. Подскажите пожалуйста как быстро и эффективно поднять Ethernet на ПЛИС Altera Cyclone 5. Есть ли альтеровские ip core ? Заранее спасибо!
  7. Компилирую библиотеки Xilinx Core Lib с помощью утилиты Сompxlib командой . Утилита ругается: В чем может быть дело ?
  8. Подскажите реализацию двухчастотного FIFO на VHDL. Заранее спасибо!
  9. Требуется получить из частоты 33,333,333 Гц - частоту 5 МГц. Подскажите реализацию на VHDL делителя частоты. Заранее спасибо!
  10. Подскажите где можно найти последнюю версию XilinxCoreLib для Aldec Active HDL ??? Заранее спасибо!
  11. Подскажите как правильно реализовать нижеописанную схему. Отказывается работать нормально. Проблема в том что внутри процесса два условия: if( Clk='1' and Clk'event ) then и if ( x2_clk='0' and x2_clk'event ) then . По сути двухфронтовая схема. Как такая схема будет вести себя ??? Моделироваться правильно отказывается. process( Clk ) begin if( Clk='1' and Clk'event ) then case ReceiveSReg is when WaitStartBit => if( x16_clk='1' ) then if( RX='0' and StartBitCntEnable='0' and StartBitFound='0' ) then StartBitCntEnable <= '1'; StartBitCnt <= StartBitCnt + '1'; end if; if( RX='1' and StartBitCntEnable='1' ) then StartBitCntEnable <= '0'; StartBitCnt <= ( others => '0' ); end if; if( RX='0' and (StartBitCntEnable='1' or StartBitFound='1') ) then StartBitCnt <= StartBitCnt + '1'; -- Считаем такты x16 end if; if( RX='0' and StartBitCntEnable='1' and StartBitCnt > "1000" ) then -- Нашли 8 бит нулевых StartBitCntEnable <= '0'; StartBitFound <= '1'; end if; if( StartBitCnt = "1111" ) then StartBitFound <= '0'; ReceiveSReg <= DataReceive; end if; end if; when DataReceive => if ( x2_clk='0' and x2_clk'event ) then -- По спадающему фронту Counter <= Counter + '1'; end if; if( x2_clk='1' and x2_clk'event ) then -- По нарастающему защелкиваем данные RX_DataIn(CONV_INTEGER( Counter )) <= RX; end if; if( Counter="111" and x2_clk='0' and x2_clk'event ) then -- 8 бит сосчитано ReceiveSReg <= ParityBitReceive; end if; when ParityBitReceive => if ( x2_clk='0' and x2_clk'event ) then ReceiveSReg <= StopBitReceive; end if; when StopBitReceive => if ( x2_clk='0' and x2_clk'event ) then ReceiveSReg <= WaitStartBit; end if; when others => ReceiveSReg <= WaitStartBit; end case; end if; end process; Заранее спасибо!!
  12. Подскажите как перевести частоту передачи данных, выраженную в битах в секунду в Герцы ??? ( бит/сек - Гц ) Заранее спасибо!
  13. Вопрос в алдеке 6.3 подключаю либу proccommon 3.0 не хочет подключаться. # Error: COMP96_0059: muxf_struct_f.vhd : (134, 1): Library "proc_common_v3_00_a" not found. # Error: COMP96_0078: muxf_struct_f.vhd : (135, 9): Unknown identifier "proc_common_v3_00_a". # Error: COMP96_0055: muxf_struct_f.vhd : (135, 9): Cannot find referenced context element. # Error: COMP96_0078: muxf_struct_f.vhd : (136, 9): Unknown identifier "proc_common_v3_00_a". # Error: COMP96_0055: muxf_struct_f.vhd : (136, 9): Cannot find referenced context element. В чем дело ?
  14. Спасибо помогло. Вот еще вопросик. ERROR:NgdBuild:604 - logical block
  15. Работаю в среде ISE 14.1. Подключаю файлик dynshreg_f.vhd. Error the next: Хотя proc_common_pkg имеется в либах. В чем фишка ? В среде ISE 14.1 никак не фигурирует.
  16. Поставлена задача реализовать Uart. library IEEE; use IEEE.STD_LOGIC_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; library UNISIM; use UNISIM.VCOMPONENTS.all; entity Uart is generic ( C_SPLB_CLK_FREQ_HZ :integer := 125000000; C_BAUDRATE :integer := 115200; C_DATA_WIDTH :integer := 8; C_PARITY_WIDTH :integer := 1; C_REMAINDER_X1 : integer := 1085; C_REMAINDER_X16 : integer := 18 ); port ( sys_clk_in_p : in std_logic; -- 33 333 333 Hz sys_clk_in_n : in std_logic; -- 33 333 333 Hz fpga_0_RS232_Uart_1_RX_pin : in std_logic; fpga_0_RS232_Uart_1_TX_pin : out std_logic; debug1 : out std_logic; debug2 : out std_logic; debug3 : out std_logic; debug4 : out std_logic; debug5 : out std_logic; debug6 : out std_logic ); end Uart; architecture Behavioral of Uart is signal x16_clk : std_logic; signal x1_clk : std_logic; signal DataEmpty : std_logic; component UartReceiver is port ( sys_clk : in std_logic; x16_clk : in std_logic; x1_clk : in std_logic; fpga_0_RS232_Uart_1_RX_pin : in std_logic; DataOut : out std_logic_vector(7 downto 0); DataWr : out std_logic; debug1 : out std_logic; debug2 : out std_logic; debug3 : out std_logic; debug4 : out std_logic; debug5 : out std_logic ); end component; component UartTransmitter is port ( sys_clk : in std_logic; -- 33 333 333 Hz x1_clk : in std_logic; -- 115200 Kbit / sec DataIn : in std_logic_vector(7 downto 0); DataWr : in std_logic; DataEmpty : out std_logic; fpga_0_RS232_Uart_1_TX_pin : out std_logic; debug1 : out std_logic; debug2 : out std_logic; debug3 : out std_logic; debug4 : out std_logic; debug5 : out std_logic ); end component; component baudrate is generic ( C_RATIO : integer ); port ( Clk : in std_logic; ClkEnable : in std_logic; EN_16x_Baud : out std_logic ); end component; component UartReceiverOld is port ( sys_clk : in std_logic; x16_clk : in std_logic; fpga_0_RS232_Uart_1_RX_pin : in std_logic; Fifo_din : out std_logic_vector(7 downto 0); Fifo_wr_en : out std_logic; DEBUG_Pin_1 : out std_logic; DEBUG_Pin_2 : out std_logic; DEBUG_Pin_3 : out std_logic; DEBUG_Pin_4 : out std_logic; DEBUG_Pin_5 : out std_logic; DEBUG_Pin_6 : out std_logic ); end component; signal DataOut : std_logic_vector(0 to C_DATA_WIDTH - 1); signal DataWr : std_logic; signal Counter : std_logic_vector(C_DATA_WIDTH-1 downto 0); signal sys_clk : std_logic; signal Fifo_wr_en_i : std_logic; signal debug1_pin : std_logic; signal debug2_pin : std_logic; signal debug3_pin : std_logic; signal debug4_pin : std_logic; signal debug5_pin : std_logic; signal debug_pin1 : std_logic; signal debug_pin2 : std_logic; signal debug_pin3 : std_logic; signal debug_pin4 : std_logic; signal debug_pin5 : std_logic; signal debugpin1 : std_logic; signal debugpin2 : std_logic; signal debugpin3 : std_logic; signal debugpin4 : std_logic; signal debugpin5 : std_logic; signal debugpin6 : std_logic; signal DEBUG_Pin_1 : std_logic; signal DEBUG_Pin_2 : std_logic; signal DEBUG_Pin_3 : std_logic; signal DEBUG_Pin_4 : std_logic; signal DEBUG_Pin_5 : std_logic; signal DEBUG_Pin_6 : std_logic; signal x1_clk_enable : std_logic; signal x1_clk_en : std_logic; signal Uart_1_TX_pin : std_logic; signal Fifo_din : std_logic_vector(7 downto 0); signal Fifo_wr_en : std_logic; begin debug1 <= fpga_0_RS232_Uart_1_RX_pin; debug2 <= DEBUG_Pin_2; debug3 <= DEBUG_Pin_3; debug4 <= DEBUG_Pin_4; debug5 <= DEBUG_Pin_5; debug6 <= DEBUG_Pin_6; -- debug1 <= '1' when ( ReceiveSReg=StartBitReceive ) else '0'; -- debug2 <= '1' when ( ReceiveSReg=DataReceive ) else '0'; -- debug3 <= '1' when ( ReceiveSReg=ParityBitReceive ) else '0'; -- debug4 <= ShiftReg( CONV_INTEGER( Counter ) ); SZD_IBUFDS_inst : IBUFDS generic map ( DIFF_TERM => TRUE, -- Differential Termination IBUF_DELAY_VALUE => "0", -- Specify the amount of added input delay for buffer, -- "0"-"12" IFD_DELAY_VALUE => "AUTO", -- Specify the amount of added delay for input register, -- "AUTO", "0"-"6" IOSTANDARD => "DEFAULT" ) port map ( O => sys_clk, -- Buffer output I => sys_clk_in_p, -- Diff_p buffer input (connect directly to top-level port) IB => sys_clk_in_n -- Diff_n buffer input (connect directly to top-level port) ); -- 8670 us ( 115200 ) BAUD_TRASNMIT_X1_RATE_I : baudrate generic map ( C_RATIO => C_REMAINDER_X1 ) port map ( Clk => sys_clk, ClkEnable => '1', EN_16x_Baud => x1_clk ); -- 540 us ( 1 843 200 ) BAUD_X16_RATE_I : baudrate generic map ( C_RATIO => C_REMAINDER_X16 ) port map ( Clk => sys_clk, ClkEnable => '1', EN_16x_Baud => x16_clk ); UartReceiverOld_i : UartReceiverOld port map ( sys_clk => sys_clk, x16_clk => x16_clk, fpga_0_RS232_Uart_1_RX_pin => fpga_0_RS232_Uart_1_RX_pin, Fifo_wr_en => Fifo_wr_en, Fifo_din => Fifo_din, DEBUG_Pin_1 => DEBUG_Pin_1, DEBUG_Pin_2 => DEBUG_Pin_2, DEBUG_Pin_3 => DEBUG_Pin_3, DEBUG_Pin_4 => DEBUG_Pin_4, DEBUG_Pin_5 => DEBUG_Pin_5, DEBUG_Pin_6 => DEBUG_Pin_6 ); -- process( ) -- begin -- -- end process; -- process( sys_clk, x1_clk ) -- begin -- if( sys_clk='1' and sys_clk'event and x1_clk='1' ) then -- if( DataEmpty='1' ) then -- DataWr <= '1'; -- Counter <= Counter + '1'; -- elsif( DataEmpty='0' ) then -- DataWr <= '0'; -- Counter <= Counter; -- end if; -- end if; -- end process; -- UART_TRANSMIT : UartTransmitter -- Сигнал записи port map ( sys_clk => sys_clk, x1_clk => x1_clk, DataIn => Fifo_din, DataWr => Fifo_wr_en, -- фича DataEmpty => DataEmpty, fpga_0_RS232_Uart_1_TX_pin => Uart_1_TX_pin, debug1 => debug1_pin, debug2 => debug2_pin, debug3 => debug3_pin, debug4 => debug4_pin, debug5 => debug5_pin ); fpga_0_RS232_Uart_1_TX_pin <= Uart_1_TX_pin; -- fpga_0_RS232_Uart_1_TX_pin <= Uart_1_TX_pin; end Behavioral; library IEEE; use IEEE.STD_LOGIC_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity UartReceiver is port ( sys_clk : in std_logic; -- 33 333 333 Hz x16_clk : in std_logic; x1_clk : in std_logic; fpga_0_RS232_Uart_1_RX_pin : in std_logic; DataOut : out std_logic_vector(7 downto 0); DataWr : out std_logic; debug1 : out std_logic; debug2 : out std_logic; debug3 : out std_logic; debug4 : out std_logic; debug5 : out std_logic; debug6 : out std_logic ); end UartReceiver; library IEEE; use IEEE.STD_LOGIC_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; library UNISIM; use UNISIM.VCOMPONENTS.all; entity UartReceiverOld is generic ( -- 8640 us ( 115200 Kbit / sec ) C_X1_DIVIDER_RATE : integer := 1085; -- 540 us ( 7200 Kbit / sec ) C_X16_DIVIDER_RATE : integer := 18 ); port ( sys_clk : in std_logic; x16_clk : in std_logic; fpga_0_RS232_Uart_1_RX_pin : in std_logic; Fifo_wr_en : out std_logic; Fifo_din : out std_logic_vector(7 downto 0); DEBUG_Pin_1 : out std_logic; DEBUG_Pin_2 : out std_logic; DEBUG_Pin_3 : out std_logic; DEBUG_Pin_4 : out std_logic; DEBUG_Pin_5 : out std_logic; DEBUG_Pin_6 : out std_logic ); end UartReceiverOld; architecture UartReceiverOld of UartReceiverOld is type ReceiveStates is (StartBitReceive, DataReceive, ParityBitReceive, StopBitReceive); signal ReceiveSReg: ReceiveStates; component baudrate is generic ( C_RATIO : integer ); port ( Clk : in std_logic; ClkEnable : in std_logic; EN_16x_Baud : out std_logic ); end component; signal Counter : std_logic_vector(2 downto 0) := "000"; signal find_first_byte_cnt : std_logic_vector(3 downto 0) := ( others => '0' ); signal ShiftReg : std_logic_vector(7 downto 0) := X"00"; signal x1_clk : std_logic; signal DataOut : std_logic_vector(7 downto 0) := ( others => '0' ); signal DataWr : std_logic := '0'; signal x1_clk_enable : std_logic; --signal Fifo_din : std_logic_vector(7 downto 0); --signal Fifo_wr_en : std_logic; signal StartBitFound : std_logic; begin BAUD_X1_RATE_I : baudrate generic map ( C_RATIO => C_X1_DIVIDER_RATE ) port map ( Clk => sys_clk, ClkEnable => x1_clk_enable, EN_16x_Baud => x1_clk ); StartBitFound <= not( fpga_0_RS232_Uart_1_RX_pin ); process( sys_clk ) begin if( sys_clk='1' and sys_clk'event ) then case ReceiveSReg is when StartBitReceive => if( x16_clk='1' and StartBitFound='1' and find_first_byte_cnt < "1111" ) then find_first_byte_cnt <= find_first_byte_cnt + '1'; elsif( x16_clk='1' and StartBitFound='1' and find_first_byte_cnt = "1111" ) then Counter <= "000"; ShiftReg <= X"00"; x1_clk_enable <= '1'; ReceiveSReg <= DataReceive; end if; when DataReceive => if( x1_clk='1' ) then if( Counter = "111" ) then ShiftReg( CONV_INTEGER( Counter ) ) <= fpga_0_RS232_Uart_1_RX_pin; ReceiveSReg <= ParityBitReceive; elsif ( Counter < "111" ) then ShiftReg( CONV_INTEGER( Counter ) ) <= fpga_0_RS232_Uart_1_RX_pin; Counter <= Counter + '1'; end if; end if; when ParityBitReceive => if( x1_clk='1' ) then Fifo_din <= ShiftReg; Fifo_wr_en <= '1'; ReceiveSReg <= StopBitReceive; end if; when StopBitReceive => if( x1_clk='1' ) then Fifo_wr_en <= '0'; x1_clk_enable <= '0'; find_first_byte_cnt <= ( others => '0' ); ReceiveSReg <= StartBitReceive; end if; when others => ReceiveSReg <= StartBitReceive; end case; end if; end process; DEBUG_Pin_1 <= fpga_0_RS232_Uart_1_RX_pin; DEBUG_Pin_2 <= x1_clk_enable; DEBUG_Pin_3 <= '1' when ( ReceiveSReg=StartBitReceive ) else '0'; DEBUG_Pin_4 <= '1' when ( ReceiveSReg=DataReceive ) else '0'; DEBUG_Pin_5 <= '1' when ( ReceiveSReg=ParityBitReceive ) else '0'; DEBUG_Pin_6 <= '1' when ( ReceiveSReg=StopBitReceive ) else '0'; end UartReceiverOld; library IEEE; use IEEE.STD_LOGIC_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity UartTransmitter is port ( sys_clk : in std_logic; -- 33 333 333 Hz x1_clk : in std_logic; -- 115200 Kbit / sec DataIn : in std_logic_vector(7 downto 0); DataWr : in std_logic; DataEmpty : out std_logic; fpga_0_RS232_Uart_1_TX_pin : out std_logic; DEBUG1 : out std_logic; DEBUG2 : out std_logic; DEBUG3 : out std_logic; DEBUG4 : out std_logic; DEBUG5 : out std_logic ); end UartTransmitter; architecture UartTransmitter of UartTransmitter is component baudrate is generic ( C_RATIO : integer ); port ( Clk : in std_logic; EN_16x_Baud : out std_logic ); end component; type TransmitStates is (StartBitTransmit, DataTransmit, ParityBitTransmit, StopBitTransmit); signal TransmitSReg: TransmitStates; signal DataCounter : std_logic_vector(7 downto 0); signal Counter : std_logic_vector(2 downto 0) := "000"; signal ShiftReg : std_logic_vector(7 downto 0); begin DEBUG1 <= '1' when ( TransmitSReg=StartBitTransmit ) else '0'; DEBUG2 <= '1' when ( TransmitSReg=DataTransmit ) else '0'; DEBUG3 <= '1' when ( TransmitSReg=ParityBitTransmit ) else '0'; DEBUG4 <= '1' when ( TransmitSReg=StopBitTransmit ) else '0'; DEBUG5 <= '1'; DataEmpty <= '1' when ( TransmitSReg=StopBitTransmit ) else '0'; -- 11 cycles process( sys_clk, x1_clk ) begin if( sys_clk='1' and sys_clk'event and x1_clk='1' ) then case TransmitSReg is when StartBitTransmit => ShiftReg <= DataIn; TransmitSReg <= DataTransmit; when DataTransmit => Counter <= Counter + '1'; if( Counter="111" ) then TransmitSReg <= ParityBitTransmit; end if; when ParityBitTransmit => TransmitSReg <= StopBitTransmit; when StopBitTransmit => if( DataWr='1' ) then TransmitSReg <= StartBitTransmit; end if; -- when others => -- TransmitSReg <= WaitData; end case; end if; end process; fpga_0_RS232_Uart_1_TX_pin <= '0' when ( TransmitSReg = StartBitTransmit ) else ShiftReg( CONV_INTEGER( Counter ) ) when ( TransmitSReg = DataTransmit ) else '1' when ( TransmitSReg = ParityBitTransmit ) else '1' when ( TransmitSReg = StopBitTransmit ) else '1'; end UartTransmitter; Требуется критика со стороны. В проекте есть ошибка данные защелкиваются некорректно. Конкретно вот в этом кусе кода есть ошибка, поэтому данные защелкиваются некорректно. if( x1_clk='1' ) then if( Counter = "111" ) then ShiftReg( CONV_INTEGER( Counter ) ) <= fpga_0_RS232_Uart_1_RX_pin; ReceiveSReg <= ParityBitReceive; elsif ( Counter < "111" ) then ShiftReg( CONV_INTEGER( Counter ) ) <= fpga_0_RS232_Uart_1_RX_pin; Counter <= Counter + '1'; end if;
  17. Поставлена задача реализовать UART. Вопрос в том, как принять входные данные. Один из вариантов - считать стартовый бит до 8 тактов 16 кратной частотой, после этого защелкивать данные по однократной частоте. Правильно ли эта реализация ?
  18. Добрый день! С помощью Coregen 7.2 генерирую fifo_generator_62. Генерация Fifo проходит успешно. Затык в том, что оно не моделируется в среде Aldec 6.3. Варнинг следующий - Unknown Identifirer fifo_generator_62. При компиляции Compile All команды Aldec вываливается варнинг. В чем может быть дело ? XilinxCoreLib продключено.
  19. Приведите идеи моргания светодиодом на языке VHDL.
  20. В бин файле байты не перевернуты. Так написано в даташите.
  21. Еще непонятно почему размер bin файла - 905,328. Хотя из данных в Virtex-4 Guide, должно быть - 905,280. 2dsmv Подскажите вы bin файл используете, сгенерированный EDK?
  22. Желательно принципиальную. В общем буду благодарен за любые схемы ..
  23. Нужна схема передатчика стыка С1-ФЛ-БИ (стуктурная и принципиальная). Подскажите где можно взять?
×
×
  • Создать...