Hallo Leute :)
Wie schon im Betreff angegeben, bekomme ich diese Fehlermeldung:
"Type error resolving infix expression "<=" as type
ieee.std_logic_1164.STD_LOGIC."
Irgendwie habe ich auch im Internet nichts gefunden. Das Beispiel, was
ich versucht habe zu programmieren, ist eigentlich sehr einfach.
Meine Idee war es einen 1 zu 4 Demultiplexer zu programmieren: Das
Eingangsbit E soll, abhängig von der Selektionsvariable SEL, auf einen
von vier Ausgängen geschalten werden. Die anderen Ausgänge sollen
hochohmig sein. Ein Low-aktiver Freigabeeingang EN sorgt dafür, dass
alle Ausgänge hochohmig werden, falls EN nicht aktiviert ist.
Das ist meine Entity + Architecture:
1
libraryIEEE;
2
useIEEE.std_logic_1164.all;
3
4
entitydemuis
5
port(e_i:instd_logic;
6
en_i:instd_logic;
7
sel_i:instd_logic_vector(1downto0);
8
q_o:outstd_logic_vector(3downto0));
9
endentitydemu;
10
11
architecturertlofdemuis
12
begin
13
p_demu:process(e_i,sel_i,en_i)
14
begin
15
ifen_i='1'then
16
q_o<=(others=>'Z');
17
else
18
casesel_iis
19
when"00"=>q_o(0)<=e_i,
20
q_o(3downto1)<=(others=>'Z');
21
22
when"01"=>q_o(1)<=e_i,
23
q_o(3downto2)<=(others=>'Z'),
24
q_o(0)<='Z';
25
26
when"10"=>q_o(2)<=e_i,
27
q_o(3)<='Z',
28
q_o(1downto0)<=(others=>'Z');
29
30
whenothers=>q_o(3)<='Z',
31
q_o(2downto0)<=(others=>'Z');
32
endcase;
33
endif;
34
endprocessp_demu;
35
endarchitecturertl;
Irgendwie habe ich das Gefühl, dass ich den Ausgang q_o so nicht
beschalten kann aber ich hoffe ihr könnt mir da weiterhelfen.
MfG
Johannes H. schrieb:> Irgendwie habe ich das Gefühl, ...
Ich auch.
Tipp: such' mal nach Kommas, wo keine hingehören.
Ob das Ding dann aber das tut, was es soll, mußt Du selber rausfinden.
Super, danke jetzt habe ich auch keine Fehlermeldungen mehr :)
Ist es eigentlich ratsam, nur einen Ausgang mit einer Datenbreite von 4
Bit (in meinem Fall q_o) zu verwenden oder ist es ist eigentlich besser
wenn ich vier Ausgänge mit jeweils einem Bit verwende?
MfG
Johannes H. schrieb:> Super, danke jetzt habe ich auch keine Fehlermeldungen mehr :)>> Ist es eigentlich ratsam, nur einen Ausgang mit einer Datenbreite von 4> Bit (in meinem Fall q_o) zu verwenden oder ist es ist eigentlich besser> wenn ich vier Ausgänge mit jeweils einem Bit verwende?>> MfG
Besser wofür? Für die Lesbarkeit eher nicht.
Der Synthese ist das relativ schnurz. Die macht so oder so dasselbe
draus.
> Da kann es aber seltsame Effekte bei der Simulation geben, und man> müsste evtl. eine Zwischenvariable zur Hilfe nehmen... :-/
<citation needed> :o)
Wieso, das funktioniert zumindest mit GHDL und Modelsim prima, letzte
Zuweisung gewinnt hat, ist ja ganz normal 'sequential'...
berndl schrieb:> Wieso, das funktioniert zumindest mit GHDL und Modelsim prima
Sollte es auch... ;-)
> <citation needed>
Ich muss mal suchen, es könnte aber auch ein Problem mit einer Zuweisung
von ausserhalb und innerhalb des Prozesses gewesen sein...
Wenn du's schon aufgesetzt hast, probier mal das. Es müsste auch gehen: