Сб янв 28, 2017 18:23:53
КРАМ писал(а):Причем тут ПК?
Насколько я понял, автор рассматривает RISC-архитектуру....
Вс янв 29, 2017 06:31:59
LastHopeMan писал(а):программа, требующая частый доступ к ядру, не уживается на одном ядре с производительными фоновыми программами, требующими суммарное время ядра.
Вс янв 29, 2017 14:30:46
HLT___________________________________________________________________________
00 :HLT ;Останов. Команда не работает на системном уровне
nn 00 :HLT Rn ;Захват регистра за опциональный
nn nn :HLT Pn/n ;Захват указателя или числового индекса
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
MOV___________________________________________________________________________
yx :MOV Rx,Ry ;Пересылка между регистрами
44 yx :MOV Px,Py ;Пересылка между указателями
Ax ii:MOV Rx,i ;Загрузка непосредственной константы в регистр
nn Ax ii:MOV Rx,[Pn+i] ;Загрузка с базовым смещением
nn Bx ii:MOV [Pn+i],Rx ;Выгрузка в базовое смещиние
r# nn Bx ii:MOV [Pn+=i],Rx ;Выгрузка по смещению и итерационным шагом
w# xx :MOV Rx,[Rx] ;Чтение с контекста
w# yx :MOV [Rx],Ry ;Запись в контекст
w# nn nn :MOV Rw,[n] ;Чтение управляющего регистра
w# ?? 00 :MOV [?],Rw ;Запись в управляющий регистр
w# 00 :MOV [0],Rw ;Переключение контекста
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
JMP___________________________________________________________________________
B8 ii:JMP $+i ;Ветвление с относительной адресацией -128..+127
nn B8 ii:JMP $+n+i ;Ветвление с относительной адресацией -1024..+1023
nn 8m ii FF:JMP n+m+i ;Ветвление с абсолютной адресацией 0..65535
w# 00 :JMP Rw ;Переключение контекста
----------
WAIT__________________________________________________________________________
B8 FE:WAIT ;Ветвление с замыканием в режим условного ожидания
nn nn B8 FE:WAIT n ;Пример режима ожидания с указанием длительности
nn 00 B8 FE:WAIT Rn ;Пример режима ожидания с указанием счётчика
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ГДЕ___________________________________________________________________________
r# - означает префикс повтора командами LOOP n/Rn/[Rn]
w# - означает префикс ожидания командами WAIT n/Rn
nn - двойной ниббл (11h, 22h, 33h, 44h, 55h, 66h, 77h)
?? - двойной ниббл необязательный и может отсутствовать
x/y- индекс регистра приёмника/транслятора
ii - байт непосредственных данных
----------
ПРИМЕРЫ_______________________________________________________________________
44 00 B8 FE 55 55:MOV AL,[5] ;Чтение управляющего регистра
44 00 B8 FE 55 00:MOV [5],AL ;Запись в управляющий регистр
44 00 B8 FE 00 :JMP AL ;Переключение на контекст задачи
44 FС 22 B6 03 :MOV [SI+=3],CL ;Запись с итерационным шагом счётчика AL
44 FC 22 A6 7D :MOV CL,[BX+2*AL];Чтение с двойной шириной по базе
Ср фев 15, 2017 13:02:15
Сб фев 18, 2017 18:55:33
Всё таки как-нибудь найдите в себе силы и почитайте Пушкина, Толстого, Достоевского ,что такое архитекура процессора и какие они бывают , тогда, возможно, идея-фикс написать собственные "чукотские заметки" создать свой "мощнейший из школолошных студенческих" отпадёт сама собой..Paguo-86PK писал(а):.. мощнейщий из студенческих и продвигал свою идею …
Вт апр 11, 2017 06:04:20
Нe представляете даже, на сколько это тяжело!petrenko писал(а):Всё таки как-нибудь найдите в себе силы и почитайте Пушкина, Толстого, Достоевского ,что такое архитекура процессора и какие они бывают , тогда, возможно, идея-фикс написать собственные "чукотские заметки" создать свой "мощнейший из школолошных студенческих" отпадёт сама собой..
А то дальше даже страшно представить, до чего сие доведёт ..
Пн июн 25, 2018 05:35:50
Вт окт 08, 2019 16:51:33
Чт окт 10, 2019 22:32:46
Вс янв 17, 2021 09:16:55
//////////////////////////////////////////////////////////////
// Main program entry
int main()
{
// LEDs states value
uint8_t ledsValue = 0x01;
// Init system timer
SYSTIM_Init();
// GPIO direction settings
IOWR_ALTERA_AVALON_PIO_DIRECTION(GPIOA_BASE, 0x07);
// Hello World
//alt_putstr("Hello from Nios II!\n");
// Custom instruction (multiplier) test
int c = ALT_CI_CIMUL(2, 2);
c = ALT_CI_CIMUL(c, 2);
// Main loop
while (1)
{
if( (IORD_ALTERA_AVALON_PIO_DATA(GPIOA_BASE) & 0x8) == 0)
{
SYSTIM_Delay(1000);
}
else
{
SYSTIM_Delay(500);
}
ledsValue = ((ledsValue<<1) & 0x6) | (!(ledsValue>>2) & 0x1);
// GPIO write
IOWR_ALTERA_AVALON_PIO_DATA(GPIOA_BASE, ledsValue);
}
return 0;
}
#include <stdint.h>
#include "altera_avalon_timer_regs.h"
#include "sys/alt_irq.h"
#include "system.h"
#include "sys_tim.h"
////////////////////////////////////////////////////////////////////////////////
// Private variables
volatile int32_t timCounter = 0;
////////////////////////////////////////////////////////////////////////////////
// System timer interrupt callback
void SysTick_Handler(void* context)
{
// clear irq status in order to prevent retriggering
IOWR_ALTERA_AVALON_TIMER_STATUS(SYSTEM_TIMER_BASE, 0);
// Decrement counter variable
timCounter--;
}
////////////////////////////////////////////////////////////////////////////////
// Initialization
void SYSTIM_Init()
{
// register the timer irq to be serviced by handle_timer_interrupt() function
alt_ic_isr_register(SYSTEM_TIMER_IRQ_INTERRUPT_CONTROLLER_ID,
SYSTEM_TIMER_IRQ,
SysTick_Handler,
0, 0);
// activate the time
IOWR_ALTERA_AVALON_TIMER_CONTROL(SYSTEM_TIMER_BASE,
ALTERA_AVALON_TIMER_CONTROL_CONT_MSK
| ALTERA_AVALON_TIMER_CONTROL_START_MSK
| ALTERA_AVALON_TIMER_CONTROL_ITO_MSK);
}
////////////////////////////////////////////////////////////////////////////////
// Delay with blocking
void SYSTIM_Delay(int32_t delay)
{
int32_t delVar = SYSTIM_SetDelay(delay);
while(SYSTIM_CheckDelay(&delVar) != 0);
}
////////////////////////////////////////////////////////////////////////////////
// Set delay value (delay with non blocking)
int32_t SYSTIM_SetDelay(int32_t delayValue)
{
return (timCounter - delayValue);
}
////////////////////////////////////////////////////////////////////////////////
// Check delay (delay with non blocking)
int32_t SYSTIM_CheckDelay(int32_t *delayVariable)
{
if((timCounter - *delayVariable) < 0)
{
return 0;
}
else
{
return -1;
}
}
Чт янв 28, 2021 14:41:28
Сб янв 30, 2021 03:00:20
Вот из-за таких мелких ограничений хотелось бы чтобы в стоимость платы входили и всякие лицензии…Тут в проекте я еще решил натянуть Интел и приделал аппаратное умножение в виде кастомной инструкции, так как бесплатная версия ядра не умеет умножать и делить.
Сб янв 30, 2021 07:41:25
Сб янв 30, 2021 11:30:26
Сб янв 30, 2021 12:00:11