Jump to content

Archived

This topic is now archived and is closed to further replies.

rhazek

Guilda Sicily

Recommended Posts

Posted

#define IDS_HELLO    1
#define IDS_GOODBYE  2

STRINGTABLE
{
    IDS_HELLO,   "Hello"
    IDS_GOODBYE, "Goodbye"

STRINGTABLE
BEGINIDS_CHINESESTRING L"\x5e2e\x52a9"
IDS_RUSSIANSTRING L"\x0421\x043f\x0440\x0430\x0432\x043a\x0430"
IDS_ARABICSTRING L"\x062a\x0639\x0644\x064a\x0645\x0627\x062a"
END
STRINGTABLE
BEGIN
IDS_1 L"5\x00BC-Inch Floppy Disk"
IDS_1a "5\xBC-Inch Floppy Disk"
IDS_2 L"Don't confuse \x2229 (intersection) with \x222A (union)"
IDS_3 "Copyright \xA92001"
IDS_3a L"Copyright \x00a92001"
END

hai ia vezi, poate ma dezlantui pe tine

stii ce e/ce face aia? :rofl1:

Posted

module microcontroller(clk, i1, i2, o1, o2);
    input [7:0] i1;
    input [7:0] i2;
    output o1;
    output o2;
    input clk;
     
     
     reg [7:0] ram[0:255];
     reg [15:0] rom[0:255], Ci;
     reg [7:0] R[0:3];
     reg [7:0] o1,o2,T1,T2,Cp=0;
     reg     [8:0] ACC;
     reg x;
     reg [1:0] Rs=0;
    
initial begin
    R[0]=0;
    R[1]=0;
    R[2]=0;
    R[3]=0;
    
    //programul de test
    //=========|==|===|=|========|
    rom[0]=16'b1100000001000000;     //IN R0,I1                 R0=I1
    rom[1]=16'b1100000110000000;     //IN R1,I2                 R1=I2
    rom[2]=16'b1000000001000000;     //ADD R0,R1     ACC=R0+R1
    rom[3]=16'b0100001000000000;     //MOVA R2         R2=ACC
    rom[4]=16'b1110101100000011;     //MOVI R3,3         R3=3
    rom[5]=16'b1011001100000000;     //AND R3,0         N-ar trebui sa scoata iesirea o1
    rom[6]=16'b0000010000001000;     //JZ 8                         Jump if zero=1
    rom[7]=16'b1100011001000000;     //OUT R2,O1     O1=R2
    rom[8]=16'b0110110000000010;     //STORE 2             ram[2]=ACC
    //=========================
    rom[9]=16'b1110100000000010;        //MOVI R0,2        R0=2
 rom[10]=16'b0100100000000000;        //LD R0                    ACC=MEM[R0]
 rom[11]=16'b0100001000000000;        //MOVA R2            R2=ACC
 rom[12]=16'b1100011010000000;        //OUT R2,O2        O2=R2
    //=============if-then-else===
 rom[13]=16'b1110100000000011;        //MOVI R0,3        R0=3
 rom[14]=16'b1110100100000010;        //MOVI R1,2        R1=2
 rom[15]=16'b1110101000000111;        //MOVI R2,7        R2=7
 //if (R0 || R1) O1=R0; else O1=R2=7;
 rom[16]=16'b1000100001000000;        //OR R0,R1            Rs[1]=R0 || R1
 rom[17]=16'b0000010000010100;        //JZ 20                      Cp=20 if zero=0
 rom[18]=16'b1100010001000000;        //OUT R0,O1        O1=R0
 rom[19]=16'b0000000000010101;        //JMP 21                 Cp=21
 rom[20]=16'b1100011001000000;        //OUT R2,O1        O1=R2
    //=========================
 rom[21]=16'b1110100000001101;        //MOVI R0,13        R0=13
 rom[22]=16'b0100010000000000;        //MOVR R0            ACC=R0
 rom[23]=16'b0110110000001000;        //STORE 8            MEM[8]=ACC
    //=========================
 rom[24]=16'b1110100011111111;        //MOVI R0,256  R0=256
 rom[25]=16'b1010000011111111;    //ADD R0,256   ACC=R0+256
 rom[26]=16'b1110100100000000;        //MOVI R1,0       R1=0
 rom[27]=16'b1010010100000001;    //ADDC R1,1     ACC=R1+1+Rs[0]
    //=========|==|===|=|========|
end

always @(posedge clk) begin
     Ci=rom[Cp];
     if ((Ci[15] == 1) || (Ci[15] == 0)) begin
         case (Ci[15])
            0: begin //cu o adresa
                case (Ci[14])
                    0: begin //jump
                        case (Ci[12:10])
                            0: begin //JMP
                                Cp=Ci[7:0]-1; //se face dupa case incrementarea Cp
                            end
                            1: begin //JZ
                                if (Rs[1] == 0) Cp=Ci[7:0]-1;
                            end
                            2: begin //JC
                                if (Rs[0]==1) Cp=Ci[7:0]-1;
                            end
                        endcase
                    end
                    1: begin //transfer date/control
                        case (Ci[12:10])
                            0: begin //MOVA
                                R[Ci[9:8]]=ACC;
                            end
                            1: begin //MOVR
                                ACC=R[Ci[9:8]];
                            end
                            2: begin //LD
                                if (Ci[13] == 1)
                                    ACC=ram[Ci[7:0]];
                                else
                                    ACC=ram[R[Ci[9:8]]];
                            end
                            3: begin //STORE
                                if (Ci[13] == 1)
                                    ram[Ci[7:0]]=ACC;
                                else
                                    ram[R[Ci[9:8]]]=ACC;
                            end
                        endcase
                    end
                endcase
            end
            
            1: begin //cu 2 adrese
                case (Ci[14])
                    0: begin //operatii
                        case (Ci[12:10])
                            0: begin //ADD
                                if (Ci[13] == 1) begin
                                    ACC=R[Ci[9:8]]+Ci[7:0];
                                end
                                else begin
                                    T1=R[Ci[9:8]];
                                    T2=R[Ci[7:6]];
                                    ACC=T1+T2;
                                end
                                //seteaza transportul
                                Rs[0]=ACC[8];
                                //seteaza bitul de zero
                                if (ACC == 0) Rs[1]=1;
                                else Rs[1]=x;
                            end
                            1: begin //ADDC
                                if (Ci[13] == 1) begin
                                    ACC=R[Ci[9:8]]+Ci[7:0]+Rs[0];
                                end
                                else begin
                                    T1=R[Ci[9:8]];
                                    T2=R[Ci[7:6]];
                                    ACC=T1+T2+Rs[0];
                                end
                                
                                //seteaza transportul
                                Rs[0]=ACC[8];
                                //seteaza bitul de zero
                                if (ACC == 0) Rs[1]=1;
                                else Rs[1]=0;
                            end
                            2: begin //OR
                                if (Ci[13] == 1) begin
                                    R[Ci[9:8]] = (R[Ci[9:8]] | Ci[7:0]);
                                end
                                else begin
                                    R[Ci[9:8]] = (R[Ci[9:8]] | R[Ci[7:5]]);
                                end
                                
                                //seteaza bitul de zero
                                if (R[Ci[9:8]] == 0) Rs[1]=0;
                                else Rs[1]=x;
                            end
                            3: begin //XOR
                                if (Ci[13] == 1) begin
                                    R[Ci[9:8]] = (R[Ci[9:8]] ^ Ci[7:0]);
                                end
                                else begin
                                    R[Ci[9:8]] = (R[Ci[9:8]] ^ R[Ci[7:5]]);
                                end
                                
                                //seteaza bitul de zero
                                if (R[Ci[9:8]] == 0) Rs[1]=0;
                                else Rs[1]=x;
                            end
                            4: begin //AND
                                if (Ci[13] == 1) begin
                                    //BIT CU BIT
                                    R[Ci[9:8]] = (R[Ci[9:8]] & Ci[7:0]);
                                end
                                else begin
                                    R[Ci[9:8]] = (R[Ci[9:8]] & R[Ci[7:5]]);
                                end
                                
                                //seteaza bitul de zero
                                if (R[Ci[9:8]] == 0) Rs[1]=0;
                                else Rs[1]=x;
                            end
                        endcase
                    end
                    1: begin //transfer date
                        case (Ci[12:10])
                            0: begin //IN
                                if (Ci[7:6] == 1) R[Ci[9:8]] = i1;
                                if (Ci[7:6] == 2) R[Ci[9:8]] = i2;
                            end
                            1: begin //OUT
                                if (Ci[7:6] == 1) o1=R[Ci[9:8]];
                                else o2=R[Ci[9:8]];
                            end
                            2: begin //MOVI
                                if (Ci[9:8] < 4) begin
                                    if (Ci[13] == 1)
                                            R[Ci[9:8]] = Ci[7:0];
                                    else
                                        R[Ci[9:8]] = R[Ci[7:6]];
                                end
                                else begin
                                    if (Ci[13]==1)
                                        ACC = Ci[7:0];
                                    else
                                        ACC = R[Ci[7:6]];
                                end
                            end
                        endcase
                    end
                endcase
            end
         endcase
        Cp=Cp+1;
     end
end
endmodule
 

asta e mai low lvl...am si assembler :-?

Aici aveti proiectarea unui microcontroller... are intrare ptr semnal de ceas extern, si stie sa faca niste operatii...cred ca SUM MUL AND OR :-??

Posted

da chiar skipy ce tot indrugi tu acolo ce este ?

mai sus era java, copy paste random din lucrarea mea de licenta :)) xD

era o functie care verifica intr-un JTree cu un custom renderer sub forma de jcheckbox... verifica daca un nod cu un anumit label este selectat xD

Posted

stii ce e/ce face aia? :rofl1:

dap, te face sa pari ca un tocilar

Imagine IPB

mai sus era java, copy paste random din lucrarea mea de licenta :)) xD

era o functie care verifica intr-un JTree cu un custom renderer sub forma de jcheckbox... verifica daca un nod cu un anumit label este selectat xD

Posted

dap, te face sa pari ca un tocilar

Imagine IPB

tocilar = persoana care stie programare? i seeeeeeee.......... esti ok! si ala prost care nu stie sa faca nimic nimic se numeste smecher si cool nu? :rofl1:

Posted

oh get a life si nu te mai ataca atata, glumeam doar. mereu o iei in serios si nu te opresti din comentarii de genu^ pana nu se izbeste o cearta, devine plictisitor si enervant

Guest RobertBK
Posted

prr tzaca prr tzaca :)

Guest
This topic is now closed to further replies.


  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...