[CALU] Re: ID-Decode?

  • From: Benedikt Huber <benedikt@xxxxxxxxxxxxxxxxxx>
  • To: calu-ss2010-tuwien@xxxxxxxxxxxxx
  • Date: Mon, 10 May 2010 04:48:21 +0200


On 10.05.2010, at 04:38, Benedikt Huber wrote:

On 09.05.2010, at 23:41, Elshuber Martin wrote:
ich hab einiges versehentlich an deine uni addresse geschickt, schau da mal rein
Hallo Martin, all,

Danke fuer die Hilfe, die id_stage kompiliert jetzt, (im branch id_stage). Nein alle Steuerleitungen werden wohl noch nicht gesetzt, allerdings hab ich auch nicht die Semantik aller verstanden.
oh, und ich bin bis inklusive samstag nicht via email erreichbar.
lg, benedikt


lg, benedikt


Am 09.05.2010 21:58, schrieb Benedikt Huber:

On 09.05.2010, at 21:26, Elshuber Martin wrote:

Am 09.05.2010 21:16, schrieb Benedikt Huber:

On 09.05.2010, at 18:19, Martin Elshuber wrote:

Welche pisp_types verwendest du?

soweit ich weis ist src/pisp_types.vhd veraltet (in der sind einige typen richtig definiert)
die aktuelle ist src/pisp/pisp_types.vhd
Ja, da bin ich dann spaeter auch draufgekommen (die alte pisp_types.vhd einfach rausloeschen in so einem Fall)

mit deinen git kommandos bekomme ich immer konflikte.
Mmh, kann sein, dass ich was vermurkst habe.
Probier mal:
git checkout -t origin/id_stage_dev
hab die files schon (konflikte lösen, mit use theirs)
soll ich noch was machen?

heute hätte ich noch zeit
nun, ich weiss nicht ob ich dich darum bitten soll... die id stage ist prinzipiell da, aber es gibt noch ein paar compile fehler, die ich nicht ganz verstehe, und vermutlich auch ein, zwei konzeptuelle. falls du dich dessen annehmen wuerdest, waer das cool (letzter stand ist in sivity.net/id_stage)
lg, benedikt


g martin

lg, benedikt

du kannst mich auch jederzeit anrufen, meine nummer hast ja (im auto brauche ich eh ablenkung sonst ist es relativ langweilig, ansonsten werde ich ab ca 21:00 wieder bei einem pc sitzen)

g martin


Zitat von Benedikt Huber <benedikt@xxxxxxxxxxxxxxxxxx>:


On 09.05.2010, at 17:07, Martin Elshuber wrote:

Zitat von Benedikt Huber <benedikt@xxxxxxxxxxxxxxxxxx>:

On 09.05.2010, at 13:18, Martin Elshuber wrote:
blöde frage?

compiliert bei euch id_stage_arc/ent? bei mir nähmlich nicht
Hi Martin,
sorry, unapply den id_stage patch vorerst noch mal.
ich hab bloederweise eine fruehe version auf den master- branch gepushed.

lg, benedikt




wenn ich wüsste wie das geht?
so wie ich da sehe sind in der jetzigen version register, und op_decode drinnen ich denke das stammt beides von dir.
hi martin,
ich hab eine revert gepushed (im Master sollten die aenderungen nicht mehr drinnen sein), und meine aenderungen sind im branch id_stage (git branch id_stage; git checkout id_stage; git pull origin id_stage).
Muss jetzt nach Wien fahren, meld mich dann wieder
lg, benedikt

mein vorschlag:
im "id_reg" (pipline register wird von IF, "plain" die instruction, sowie ret-addr addr, und miss-tgt übernommen.

im id_arch werden vier entities instantiert:
1) id_register (speichert die obigen signale)
2) pisp_registers (16 register, zusätzlicher eingang wb2id für forwarding) 3) op_decode generiert aus dem opcode, alle signale für die späteren stufen, und für den mux zur immediate selection
4) immediate decode

mach mal die entities die du willst, und ich baue dann heute abend id_stage, id_register neu. ist hauptsächlich copy paste aus den anderen stufen. wenn es bei dir zeilich eng wird kann ich auch gerne was für dich übernhemen, zb.: immediate decode, oder das register file.

zum übersetzen von std_logic_vector(...) auf enumeration würde ich folgenden code vorschlagen

type cmp_op_type is range (CMP_EQ, .....);
type cmp_op_decode_type is array (0 to 7);
const cmp_op_decode: cmp_op_decode_type:=(0<=CMP_EQ, 1<=CMP_L, ....) ex.cmp_op<=cmp_op_decode(to_integer(unsigned(opcode(17 downto 15)));

oder

subtype cmp_op_type is std_logic_vector(2 downto 0);
const CMP_EQ : cmp_op_type := "000";
const CMP_L : cmp_op_type := "001";
...
ex.cmp_op<=opcode(17 downto 15);

wichtig ist halt, daß deine ein/ausgänge klar sind. das ist aber denke ich halbwegs selbst erklärend. bis jetzt gibt es zu diesem zwek je entity 2 records <entname>_in_type, <entname>_out_type.

durch diese modularisierung, erhöhen wir die wart/lesbarkeit deutlich Die netzdiagramme vom quartus sind dann auch übersichlicher, und man erkennt besser ob man etwas halbwegs sinnvolles gebaut hat. mir ist das bei meiner predicate operation aufgefallen. Da habe ich dann noch eine 2te arch gebaut, die schätzungweise ein drittel der logik von der ersten variante braucht.

lg martin














Other related posts: