Added examples and documentation
This commit is contained in:
parent
c17fbd2dcf
commit
bf029929a7
Binary file not shown.
|
@ -0,0 +1,310 @@
|
|||
@name "Jednostavni FRISC"
|
||||
@info "Ova biblioteka omogućuje kreiranje sustava s procesorom FRISC s pojednostavljenim načinom spajanja bez potrebe da se spajaju pojedine linije sabirnice."
|
||||
@directory "libraries\frisc\vjezba1"
|
||||
|
||||
@address glavniAS(0,0xFFFFFFFF)
|
||||
@address pomocniAS(0xFFFF0000,0xFFFFFFFF)
|
||||
|
||||
@messages {
|
||||
Ok: "OK";
|
||||
Yes: "Da";
|
||||
No: "Ne";
|
||||
Cancel: "Otkaži";
|
||||
noneBusLine: "nespojen";
|
||||
noneValue: "nema vrijednosti";
|
||||
generalPinNotConnected: "Opći pin nije spojen niti na jednu sabirnicu";
|
||||
}
|
||||
|
||||
@component FRISC processor {
|
||||
@instanceName "procesor"
|
||||
@tooltip "procesor FRISC, mora postojati jedan"
|
||||
@count (1, 1)
|
||||
@source "FRISC.cdl"
|
||||
@display {
|
||||
/*
|
||||
rectangle {
|
||||
x:0; y:0;
|
||||
mainColor: black;
|
||||
width: 100;
|
||||
height: 100;
|
||||
lineThickness: 2;
|
||||
}
|
||||
rectangle {
|
||||
x:2; y:2;
|
||||
mainColor: blue;
|
||||
width: 96;
|
||||
height: 96;
|
||||
lineThickness: 1;
|
||||
}
|
||||
text {
|
||||
x: 2; y:2;
|
||||
mainColor: black;
|
||||
text: black;
|
||||
}
|
||||
text {
|
||||
x: 20; y:20;
|
||||
text: instanceName;
|
||||
}*/
|
||||
rect {
|
||||
x: 0; y:0; w:100; h:100;
|
||||
}
|
||||
}
|
||||
@pin glavniPin inOut {
|
||||
@tooltip "pin za spajanje na glavnu sabirnicu"
|
||||
@connection check_only("COMDEL se ne može stvoriti. FRISC nije spojen na sabirnicu")
|
||||
@display {
|
||||
/*
|
||||
pin {
|
||||
x: 100; y: 50;
|
||||
fillColor: white;
|
||||
lineColor: red;
|
||||
fillColorConnected: white;
|
||||
lineColorConnected: black;
|
||||
side: left;
|
||||
size: 20;
|
||||
}*/
|
||||
pin {
|
||||
x: 42; y: 100; w: 16; h:16;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@component Memorija memory {
|
||||
@instanceName "memorija"
|
||||
@tooltip "Memorijska komponenta, mora postojati barem jedna"
|
||||
@count (1,1000)
|
||||
@source "memory.cdl"
|
||||
@attribute kapacitet int default 65536 {
|
||||
@popup automatic {
|
||||
@title "Kapacitet memorije"
|
||||
@text "Zadajte kapacitet memorije u bajtovima"
|
||||
@rule {
|
||||
if(!divisible(kapacitet,2)) {
|
||||
error("Kapacitet memorije nije djeljiv s potencijom broja 2")
|
||||
}
|
||||
}
|
||||
@rule {
|
||||
if(less_then(kapacitet,1024)) {
|
||||
warning("Kapacitet memorije je premali (minimum je 1024)")
|
||||
} else if (greater_then(kapacitet, 1048576)) {
|
||||
error("Kapacitet memorije je {kapacitet} a mora biti manji od 1048576 (1MB)")
|
||||
} else if (greater_then(kapacitet, 65536)) {
|
||||
warning("Želite li zaista memoriju veću od 65536 bajtova?")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@attribute size int default 8
|
||||
@attribute pocetnaAdresa int default 0 {
|
||||
@popup automatic {
|
||||
@title "Početna adresa memorije"
|
||||
@text "Zadajte početnu adresu memorije"
|
||||
@rule {
|
||||
if(!contains_address(glavniAS, pocetnaAdresa)) {
|
||||
error("Početna adresa memorije je izvan 32 bitnog adresnog prostora")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@rule {
|
||||
if(!contains(glavniAS, pocetnaAdresa, kapacitet)) {
|
||||
error("Završna adresa memorije je izvan 32 bitnog adresnog prostora")
|
||||
}
|
||||
}
|
||||
@rule {
|
||||
if(!unique(glavniAS, pocetnaAdresa, kapacitet)) {
|
||||
error("Adrese memorije nisu jedinstvene u adresnom prostoru (preklapaju se s nekom drugom komponentom)")
|
||||
}
|
||||
}
|
||||
@rule {
|
||||
if(!divisible(pocetnaAdresa, kapacitet)) {
|
||||
error("Početna adresa memorije mora biti višekratnik kapaciteta memorije")
|
||||
}
|
||||
}
|
||||
|
||||
@display {
|
||||
/*
|
||||
rectangle {
|
||||
x:0; y:0;
|
||||
width: 100;
|
||||
height: 50;
|
||||
mainColor: black;
|
||||
lineThickness: 2;
|
||||
}
|
||||
text {
|
||||
x:20; y:20;
|
||||
mainColor: black;
|
||||
text: "Memorija";
|
||||
}
|
||||
*/
|
||||
rect {
|
||||
x: 0; y: 0; w: 100; h: 50;
|
||||
}
|
||||
}
|
||||
|
||||
@pin glavniPin inOut {
|
||||
@tooltip "pin za spajanje na glavnu sabirnicu"
|
||||
@connection check_only("COMDEL se ne može stvoriti. Memorija nije spojena na sabirnicu")
|
||||
@display {
|
||||
/*
|
||||
pin {
|
||||
x: 100; y: 25;
|
||||
fillColor: blue;
|
||||
lineColor: red;
|
||||
fillColorConnected: white;
|
||||
lineColorConnected: black;
|
||||
side: right;
|
||||
size: 20;
|
||||
}
|
||||
*/
|
||||
pin {
|
||||
x: 42; y: -16; w: 16; h: 16;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@component DMA {
|
||||
@instanceName "dma"
|
||||
@tooltip "DMA-kontroler"
|
||||
@count (1,1000)
|
||||
@source "dma.cdl"
|
||||
@attribute pocetnaAdresa int default 0 {
|
||||
@popup automatic {
|
||||
@title "Početna adresa DMA-kontrolera"
|
||||
@text "Zadajte početnu adresu DMA-kontrolera"
|
||||
@rule {
|
||||
if(contains_address(glavniAS, pocetnaAdresa)) {
|
||||
error("Početna adresa memorije je izvan 32 bitnog adresnog prostora")
|
||||
}
|
||||
}
|
||||
@rule {
|
||||
if(!contains(glavniAS, pocetnaAdresa, 32)) {
|
||||
error("Završna adresa memorije je izvan 32 bitnog adresnog prostora")
|
||||
}
|
||||
}
|
||||
@rule {
|
||||
if(unique(glavniAS, pocetnaAdresa, 32)) {
|
||||
error("Adrese memorije nisu jedinstvene u adresnom prostoru (preklapaju se s nekom drugom komponentom)")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@display {
|
||||
/*
|
||||
rectangle {
|
||||
x:0; y:0;
|
||||
width: 100;
|
||||
height: 100;
|
||||
mainColor: black;
|
||||
lineThickness: 1;
|
||||
}
|
||||
text {
|
||||
x:20; y:20;
|
||||
mainColor: black;
|
||||
text: "DMA";
|
||||
}*/
|
||||
rect {
|
||||
x: 0; y: 0; w: 100; h: 100;
|
||||
}
|
||||
}
|
||||
|
||||
@pin glavniPin in {
|
||||
@tooltip "pin za spajanje na glavnu sabirnicu"
|
||||
@connection check_only("COMDEL se ne može stvoriti. DMA nije spojena na sabirnicu")
|
||||
@display {
|
||||
/*
|
||||
pin {
|
||||
x: 100; y: 50;
|
||||
fillColor: red;
|
||||
lineColor: black;
|
||||
fillColorConnected: white;
|
||||
lineColorConnected: black;
|
||||
side: left;
|
||||
size: 20;
|
||||
}
|
||||
*/
|
||||
pin {
|
||||
x: 100; y: 50; w: 16; h: 16;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@pin dodatnaPoveznica in {
|
||||
@tooltip "pin za spajanje na pomocnu sabirnicu"
|
||||
@connection check_only("COMDEL se ne može stvoriti. DMA nije spojen na nesto!")
|
||||
@display {
|
||||
pin {
|
||||
x: 0; y: 0; w: 0; h: 0;
|
||||
}
|
||||
}
|
||||
@wires { 0, 0, null, null}
|
||||
}
|
||||
}
|
||||
|
||||
@bus glavnaSabirnica regular {
|
||||
@tooltip "sabirnica za spajanje FRISC a s memorijama i UI/jedinicama"
|
||||
@count (1,1)
|
||||
@display {
|
||||
/*
|
||||
rectangle {
|
||||
x:0; y: 0;
|
||||
height: 20;
|
||||
width: 50;
|
||||
orientation: horizontal;
|
||||
lineColor: black;
|
||||
}*/
|
||||
rect {
|
||||
x:0; y:0;
|
||||
h: 20; w: 100;
|
||||
}
|
||||
}
|
||||
@wires {
|
||||
ADR<32>,
|
||||
DATA<32>,
|
||||
READ,
|
||||
WRITE,
|
||||
WAIT wired_and,
|
||||
INT0 wired_and,
|
||||
INT1 wired_and,
|
||||
INT2 wired_and,
|
||||
INT3 wired_and,
|
||||
SIZE<3>,
|
||||
IACK,
|
||||
BREQ,
|
||||
BACK
|
||||
}
|
||||
}
|
||||
@bus PIOSabirnica automatic {
|
||||
@wires {
|
||||
PIO_DATA<8>,
|
||||
READY,
|
||||
STROBE
|
||||
}
|
||||
}
|
||||
|
||||
@connection (FRISC.glavniPin, glavnaSabirnica) {
|
||||
@wires{ADR, DATA, READ, WRITE, SIZE, WAIT, INT0, INT1, INT2, INT3, IACK, 1, null}
|
||||
}
|
||||
@connection (Memorija.glavniPin, glavnaSabirnica) {
|
||||
@wires{ADR, DATA, READ, WRITE, SIZE, WAIT}
|
||||
}
|
||||
@connection (DMA.glavniPin, glavnaSabirnica) {
|
||||
@attribute interupt wire default INT0 {
|
||||
@popup automatic {
|
||||
@title "Povezivanje interupt signala"
|
||||
@text "Odaberite sabirničku liniju na koju želite spojiti priključak INT od skopa DMA"
|
||||
@enumerated {
|
||||
"INT0" = INT0,
|
||||
"INT1" = INT1,
|
||||
"INT2" = INT2,
|
||||
"Hardwire 1" = 1,
|
||||
"None" = null
|
||||
}
|
||||
}
|
||||
}
|
||||
@wires{ADR, DATA, READ, WRITE, SIZE, WAIT, interupt, BREQ, BACK}
|
||||
}
|
|
@ -0,0 +1,55 @@
|
|||
@source "frisc_library.csl"
|
||||
|
||||
@schema {
|
||||
@instance proc FRISC {
|
||||
@position (0, 0)
|
||||
}
|
||||
|
||||
@instance mem Memorija {
|
||||
@position (0, 250)
|
||||
@attribute kapacitet 1024
|
||||
@attribute size 8
|
||||
@attribute pocetnaAdresa 1023
|
||||
}
|
||||
|
||||
@instance bus glavnaSabirnica {
|
||||
@position (0, 200)
|
||||
@size 100
|
||||
}
|
||||
|
||||
@wire wire_001 {
|
||||
@position (50, 116)
|
||||
@display {
|
||||
/*
|
||||
line {
|
||||
color: blue;
|
||||
points: 100;
|
||||
}*/
|
||||
line {
|
||||
x1: 0; y1: 0; x2: 0; y2: 84;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@wire wire_002 {
|
||||
@position (50, 220)
|
||||
@display {
|
||||
/*
|
||||
line {
|
||||
color: blue;
|
||||
points: 100;
|
||||
}*/
|
||||
line {
|
||||
x1: 0; y1: 0; x2: 0; y2: 14;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@connection (proc.glavniPin, bus) {
|
||||
@wire wire_001
|
||||
}
|
||||
|
||||
@connection (mem.glavniPin, bus) {
|
||||
@wire wire_002
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue