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

Кто -нибудь знаком с openmsp430

не придирайтесь к словам :)

в этом случае редьюсед подразумевает, что редуцированы операции работающие с операндами из/в памяти

например РРС - общепризнано, что RISC - но инструкций там побольше чем у х86

А я как раз к словам не придираюсь. Я придираюсь к лицам, узко и ограниченно интерпретирующим это понятие. Не важно, что именно и относительно чего редуцировали, главное - что редуцировали, и все. Поэтому и риск. И от того, что отдельно взятый "LordVader" не признает MSP риском, MSP им не перестает быть. И система команд у него - Reduced Instruction Set от PDP-11.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Автору - а чем LatticeMico8 не устраивает? И под фпга заточен, и компилер есть, и исходники...

Откуда бы достать? На сайте зарегаться не могу. Тут лежит где-нибудь. Желательно ссылку и на компилятор и на утилиты.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я придираюсь к лицам,

Переход на личности.

И система команд у него - Reduced Instruction Set от PDP-11.

Это вам тоже TI сказала?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

RISC, CISC - не все-ли равно? Например, я не знаю, к какому типу отнести свое собственное ядро. И как считать число инструкций. И меня это не волнует.

Изменено пользователем Leka

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Прошу участников воздержаться от религиозных войн и перехода на личности

Модератор

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо. Скачал. Ссылочку на с-компилятор (или иде) дадите. Какие рекомендации по применению? Ломать там что-нибудь надо?

Кстати пароль требует если попытаться войти в каталог http://www.latticesemi.com/documents/

На прямые ссылки из этого каталога не ругается

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Какие рекомендации по применению? Ломать там что-нибудь надо?

Ломать там ничего не надо, оно же в исходниках все. Рекомендаций не дам, я сам ни разу не применял FPGA-ориентированные ядра, лишь анализировал их по занимаемым ресурсам и производительности. А до дела так и не дошло, все мое ПЛИСовое пока что решалось без ядер, я лишь был на грани применения ядра. Вам его присоветовал лишь из-за того, что оно мне показалось наиболее элегантным из доступных, поддерживаемым серьезным производителем и легко портируемым на разные архитектуры ПЛИС.

 

Про С - на сколько я знаю, сам Lattice поддерживает только Mico32 компилятор (http://www.latticesemi.com/forums/forum/messageview.cfm?catid=164&threadid=10282&enterthread=y), считая такую мелкоту не достойным С. Ну а компилятор ассемблера - по ссылке должен был быть.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

у самого руки не доходят (нету задачи), но вроде активный проект с С/С++

 

http://opensource.zylin.com/zpu.htm

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

у самого руки не доходят (нету задачи), но вроде активный проект с С/С++

http://opensource.zylin.com/zpu.htm

 

Вроде в симуляторе фунциклит (zpu4_small) - программа вроде работает по шагам... правда недолго... (красное просачивается в RAM непонятно по какой причине...)

Я в VHDL не силён: модель памяти программ/данных в виде:

entity dualport_ram is
port (clk : in std_logic;
    memAWriteEnable : in std_logic;
    memAAddr : in std_logic_vector(maxAddrBitBRAM downto minAddrBit);
    memAWrite : in std_logic_vector(wordSize-1 downto 0);
    memARead : out std_logic_vector(wordSize-1 downto 0);
    memBWriteEnable : in std_logic;
    memBAddr : in std_logic_vector(maxAddrBitBRAM downto minAddrBit);
    memBWrite : in std_logic_vector(wordSize-1 downto 0);
    memBRead : out std_logic_vector(wordSize-1 downto 0));
end dualport_ram;

architecture dualport_ram_arch of dualport_ram is


type ram_type is array(natural range 0 to ((2**(maxAddrBitBRAM+1))/4)-1) of std_logic_vector(wordSize-1 downto 0);

shared variable ram : ram_type :=
(
0 => x"0b0b0b0b",
1 => x"82700b0b",
2 => x"80d5f40c",
3 => x"3a0b0b80",
4 => x"c4fb0400",



    others => x"00000000"
);

begin

process (clk)
begin
    if (clk'event and clk = '1') then
        if (memAWriteEnable = '1') and (memBWriteEnable = '1') and (memAAddr=memBAddr) and (memAWrite/=memBWrite) then
            report "write collision" severity failure;
        end if;
    
        if (memAWriteEnable = '1') then
            ram(to_integer(unsigned(memAAddr))) := memAWrite;
            memARead <= memAWrite;
        else
            memARead <= ram(to_integer(unsigned(memAAddr)));
        end if;
    end if;
end process;

process (clk)
begin
    if (clk'event and clk = '1') then
        if (memBWriteEnable = '1') then
            ram(to_integer(unsigned(memBAddr))) := memBWrite;
            memBRead <= memBWrite;
        else
            memBRead <= ram(to_integer(unsigned(memBAddr)));
        end if;
    end if;
end process;




end dualport_ram_arch;

 

синтезабельна в плане начального заполнения кодом ячеек памяти? При попытке синтеза пишет что :

Device Utilization Summary:

   Number of BUFGMUXs                        1 out of 8      12%
   Number of External IOBs                  91 out of 141    64%
      Number of LOCed IOBs                   0 out of 91      0%

   Number of RAMB16s                         8 out of 16     50%   - типа всё таки используется блочное ОЗУ для памяти
   Number of Slices                        312 out of 3584    8%
      Number of SLICEMs                      0 out of 1792    0%

 

НО нигде в отчёте не видно чем он заполнил это блочное ОЗУ:

0 => x"0b0b0b0b",
1 => x"82700b0b",
2 => x"80d5f40c",
3 => x"3a0b0b80",
4 => x"c4fb0400",

- этой информации я не вижу в логах синтезатора.

 

Тоесть нужно - ли искать/создавать транслятор который заполняет блочное ОЗУ явно?

   RAMB16_S1_S1_inst : RAMB16_S1_S1
   generic map (
      INIT_A => "0", --  Value of output RAM registers on Port A at startup
      INIT_B => "0", --  Value of output RAM registers on Port B at startup
      SRVAL_A => "0", --  Port A ouput value upon SSR assertion
      SRVAL_B => "0", --  Port B ouput value upon SSR assertion
      WRITE_MODE_A => "WRITE_FIRST", --  WRITE_FIRST, READ_FIRST or NO_CHANGE
      WRITE_MODE_B => "WRITE_FIRST", --  WRITE_FIRST, READ_FIRST or NO_CHANGE
      SIM_COLLISION_CHECK => "ALL", -- "NONE", "WARNING", "GENERATE_X_ONLY", "ALL" 
      -- The following INIT_xx declarations specify the initial contents of the RAM
      -- Address 0 to 4095
      INIT_00 => X"1122330000000000000000000000000000000000000000000000000000000000",
      INIT_01 => X"0000000000000000000000000000000000000000000000000000000000000000",
      INIT_02 => X"0000000000000000000000000000000000000000000000000000000000000000",
      INIT_03 => X"0000000000000000000000000000000000000000000000000000000000000000",
      INIT_04 => X"0000000000....

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Кстати, вот наиболее интересные фрагменты кода для ZPU:

 если volatile unsigned char *p = (unsigned short *)(0xF000);
и      volatile unsigned char k;

то

00000541 <.LM7>:
k = *p;
541:    91              im 17
542:    d8              im -40
543:    08              load
544:    51              storesp 4
545:    70              loadsp 0
546:    33              loadb
547:    99              im 25
548:    8c              im 12
549:    34              storeb

0000054a <.LM8>:
p++;
54a:    81              im 1
54b:    11              addsp 4
54c:    91              im 17
54d:    d8              im -40
54e:    0c              store

 

сказывается отсутствие банка регистров... зато мальнькое

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

если вам без разницы ядро почему бы не взять xsoc16 http://www.fpgacpu.org/ проект давно вылизан, есть си компилятор. При этом проц затачивался под фпга

 

Здесь на форуме https://www.embeddedrelated.com/showthread/...-cpu/1381-1.php автор пишет что данный проц затачивался под Xilinx семейство XC4000E, и не рекомендует использовать его в альтерах. Пробовал кто-нибудь запускать их в циклонах например?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...