Jump to content

    

Делюсь: openMsp430 core for Cyclone-III

Бесплатный NIos II - это Economy (версия "e"). А версии "s" и "f" - платные.

На Web Edition даже с версией "e" всё равно только в режиме OpenCores получается ( так сообщает Quartus ) , хотя генерится не лимитированный по времени sof.

 

Warning (12189): OpenCore Simulation-Only Evaluation feature is turned on for all cores in the design

Warning (12191): Some cores in this design do not support the OpenCore Plus Hardware Evaluation feature

Warning (12192): "Nios II Processor (6AF7_00A2)" does not support the OpenCore Plus Hardware Evaluation feature

Share this post


Link to post
Share on other sites

NIOS съедает так мало LE, потому что банк регистров сделан на блоках ОЗУ. А в этой поделке защелки и мультиплексоры. Аналог Mega128 легко влезает в 300... 500 LE и имеет гораздо более продвинутую систему команд.

Share this post


Link to post
Share on other sites

Насколько я помню... не сказал бы что у Меги более продвинутая система, чем МСП (хотя МСП я лично недолюбливаю, даже не знаю почему... наверное потому что не АРМ =))

Share this post


Link to post
Share on other sites

Здравствуйте, в файле в исходниках от openmsp430 - omsp_gpio.v есть следующее:

// Register base address (must be aligned to decoder bit width)
parameter       [14:0] BASE_ADDR   = 15'h0000;

// Decoder bit width (defines how many bits are considered for address decoding)
parameter              DEC_WD      =  6;

// Register addresses offset
parameter [DEC_WD-1:0] P1IN        = 'h20,                    // Port 1
                       P1OUT       = 'h21,
                       P1DIR       = 'h22,
                       P1IFG       = 'h23,
                       P1IES       = 'h24,
                       P1IE        = 'h25,
                       P1SEL       = 'h26,
                       P2IN        = 'h28,                    // Port 2
                       P2OUT       = 'h29,
                       P2DIR       = 'h2A,
                       P2IFG       = 'h2B,
                       P2IES       = 'h2C,
                       P2IE        = 'h2D,
                       P2SEL       = 'h2E,
                       P3IN        = 'h18,                    // Port 3
                       P3OUT       = 'h19,
                       P3DIR       = 'h1A,
                       P3SEL       = 'h1B,
                       P4IN        = 'h1C,                    // Port 4
                       P4OUT       = 'h1D,
                       P4DIR       = 'h1E,
                       P4SEL       = 'h1F,
                       P5IN        = 'h30,                    // Port 5
                       P5OUT       = 'h31,
                       P5DIR       = 'h32,
                       P5SEL       = 'h33,
                       P6IN        = 'h34,                    // Port 6
                       P6OUT       = 'h35,
                       P6DIR       = 'h36,
                       P6SEL       = 'h37;

// Register one-hot decoder utilities
parameter              DEC_SZ      =  (1 << DEC_WD);
parameter [DEC_SZ-1:0] BASE_REG    =  {{DEC_SZ-1{1'b0}}, 1'b1};

// Register one-hot decoder
parameter [DEC_SZ-1:0] P1IN_D      =  (BASE_REG << P1IN),     // Port 1
                       P1OUT_D     =  (BASE_REG << P1OUT),
                       P1DIR_D     =  (BASE_REG << P1DIR),
                       P1IFG_D     =  (BASE_REG << P1IFG),
                       P1IES_D     =  (BASE_REG << P1IES),
                       P1IE_D      =  (BASE_REG << P1IE),
                       P1SEL_D     =  (BASE_REG << P1SEL),
                       P2IN_D      =  (BASE_REG << P2IN),     // Port 2
                       P2OUT_D     =  (BASE_REG << P2OUT),
                       P2DIR_D     =  (BASE_REG << P2DIR),
                       P2IFG_D     =  (BASE_REG << P2IFG),
                       P2IES_D     =  (BASE_REG << P2IES),
                       P2IE_D      =  (BASE_REG << P2IE),
                       P2SEL_D     =  (BASE_REG << P2SEL),
                       P3IN_D      =  (BASE_REG << P3IN),     // Port 3
                       P3OUT_D     =  (BASE_REG << P3OUT),
                       P3DIR_D     =  (BASE_REG << P3DIR),
                       P3SEL_D     =  (BASE_REG << P3SEL),
                       P4IN_D      =  (BASE_REG << P4IN),     // Port 4
                       P4OUT_D     =  (BASE_REG << P4OUT),
                       P4DIR_D     =  (BASE_REG << P4DIR),
                       P4SEL_D     =  (BASE_REG << P4SEL),
                       P5IN_D      =  (BASE_REG << P5IN),     // Port 5
                       P5OUT_D     =  (BASE_REG << P5OUT),
                       P5DIR_D     =  (BASE_REG << P5DIR),
                       P5SEL_D     =  (BASE_REG << P5SEL),
                       P6IN_D      =  (BASE_REG << P6IN),     // Port 6
                       P6OUT_D     =  (BASE_REG << P6OUT),
                       P6DIR_D     =  (BASE_REG << P6DIR),
                       P6SEL_D     =  (BASE_REG << P6SEL);

 т.е. 6-битной шине  P1IN_D присваивается  BASE_REG смещенный влево на 32:

parameter [DEC_SZ-1:0] P1IN_D      =  (BASE_REG << P1IN)

Помогите разобраться как такое может быть в чем смысл такого смещения?

Share this post


Link to post
Share on other sites

DEC_WD = 6

DEC_SZ = 64

P1IN_D - 64-х битная шина. Ну и по комментам понятно: one-hot кодирование

Share this post


Link to post
Share on other sites

Спасибо, теперь понятно, не внимательно смотрел )

Share this post


Link to post
Share on other sites

Помогите разобраться пожалуйста. В файле OpenMSP430_fpga.v две строчки:

	global	gbuf_clk_sys (.in( oc25m ), .out( clk_sys ) );
	global	gbuf_reset_n (.in( ~oRst ), .out( reset_n ) );

Выглядит как установка двух экзепляров модулей "global", но таких модулей в проекте я не нашел. Кто подскажет может это какие-то стандартные блоки veriloga типа "and"? Где можно увидеть их описание?

Share this post


Link to post
Share on other sites

Остановился на этапе конвертирования в формат mif. Поставил MinGW, mspgcc отсюда: https://sourceforge.net/projects/mspgcc/files/latest/download, прописал в переменную Path расположение их /bin (от MinGW и mspgcc). 

В командной строке захожу в папку с проектом memledtest, ввожу "make" и получаю ошибку: prtscr.thumb.jpg.7688a2bdea73ce4cb1f84a05334eec90.jpg

MinGW вроде как отдельно работает- компилирует. Может mspgcc не подходит, (не подходящая версия), хотя пробовал и другие, и такой же результат был. Или в MinGW не хватает какого-то пакета, в чем может быть проблема? Что необходимо устанавливать в MinGW чтобы было достаточно для нормальной работы? 

Share this post


Link to post
Share on other sites
В 15.04.2019 в 08:36, valerony сказал:

Выглядит как установка двух экзепляров модулей "global", но таких модулей в проекте я не нашел.

Скорее всего это глобальные буферы от Altera. После них сигнал выходит на глобальное дерево. Легко можно заменить на assign

Share this post


Link to post
Share on other sites
20 minutes ago, dvlwork said:

Скорее всего это глобальные буферы от Altera. После них сигнал выходит на глобальное дерево. Легко можно заменить на assign

Спасибо, похоже на то... Я в своем проекте просто их закомментировал, и вообще модуль pll не включил. Похоже это для увеличения "fanout". Короче проект с имеющимся .mif с мигающим портом работает. Огромное спасибо автору особенно за этот mif т.к. позволил оценить функциональность. 

По поводу makefile разбираюсь..., пока нашел литературу по утилите make, как с ней работать и в таком духе... 

Share this post


Link to post
Share on other sites

Когда запускаю компиляцию утилитой make, сообщает что отсутствует файл in430.h

И действительно, такого файла нигде нет ни в компиляторе mspgcc, ни в RedHat версии. Подскажите какой компилятор взять?

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this