custom instruction einbinden

#1373133
Lesenswert?

Hallo,

Ich versuche eine "multi-cycle custom instruction" einzubinden, aber 
irgendwie kann ich den "clock-cycle" nicht ändern.
In dem User Guide:
http://www.altera.com/literature/ug/ug_nios2_custom_instruction.pdf

steht auf der Seite 25:

"The Clock Cycles field indicates the type of custom instruction:
combinational logic, multi-cycle, extended, internal register file,
or external interface. If the custom instruction is a fixed length,
multi-cycle custom instruction, you must edit this field to
specify the number of clocks. You must determine this number
based on knowledge of the custom instruction state machine. In
the case of a variable length multi-cycle custom instruction, the
Clock Cycles field displays Variable."

aber ich kann es nicht ändern, es steht da immer "cominational".
In den Custom Instruction Einstellungen unter der Rubrik, Tab, Interface 
habe ich die Option Clock-Cycle auf 15 gesetzt, aber irgendwie 
intressiert ihm das nicht.

Muss ich da überhaupt den Typ ändern, oder muss ich das irgendwo anders 
einstellen?
Und wenn ich den Typ da ändern soll, wie geht das?
Angehängte Dateien:
#1373916
Lesenswert?

Läubi .. schrieb:
> Schau mal welche Nios Version (economic/standard/fast) du nuzt.

standard


> Hast du den shcon eine Custom Instruction erstellt? Die muß für
> Multicycle ein bestimmtes Interface implementieren!

was für ein interface meinst du, kannst du mal bitte ein bsp bringen?
wenn ich die bsp custom instruction, zb bitswap, einbinde gehen die, 
aber die sind auch nicht als multi-cycle gedacht.


danke
#1374975
Lesenswert?

1
entity custominstruction is
2
port(
3
  clk: in std_logic;        -- CPU system clock (always required)
4
  reset: in std_logic;        -- CPU master asynchronous active high reset (always required)
5
  clk_en: in std_logic;        -- Clock-qualifier (always required)
6
  start: in std_logic;        -- Active high signal used to specify that inputs are valid (always required)
7
  done: out std_logic;        -- Active high signal used to notify the CPU that result is valid (required for variable multi-cycle)
8
  dataa: in std_logic_vector(31 downto 0);    -- Operand A (always required)
9
  datab: in std_logic_vector(31 downto 0);    -- Operand B (optional)
10
  result: out std_logic_vector(31 downto 0)    -- result (always required)  
11
);
12
end entity custominstruction;
#1382308
Lesenswert?

hi,
so ich habe das jetzt mal getestet,
also wenn ich das done rausnehme, zeigt er mir die cyklen an die ich 
engestellt habe,
wenn ich done drin lasse, zeigt er mir, nicht immer, "variable" an

was jetzt aber noch ein problem ist,
er kriegt irgendwie kein clk signal und gibt daher nur den im rest 
gesetzten result zurück...
ext und int clock bringen beide nix
#1399255
Lesenswert?

also ich habe jetzt verschiedene untersuchungen gemacht
wenn ich eine konstante zurück gebe also
result <= x"12345678";
dann macht er dies,
wenn ich aber irgendwas anderes zurück gebe
zb den übergabe wert, gibt er mir irgendwas zurück,
zwar immer die selbe zahl, nach dem compilieren aber sie scheint 
zufällig zu sein, vieleicht irgend eine speicher adresse...
ob ich done gleich auf 1 setze, oder ein takt nach dem schreiben in 
result, warte und dann auf 1 setze, ist egal

hat jemand eine idee?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren