Forum: FPGA, VHDL & Co. process immer laufen in VHDL


von Plau S. (radih)


Lesenswert?

ich habe hier ein verilog programm:

always
...

....



also always haengt von keinem Signal ab

ich kann nicht process(sensitivity list)  verwenden

ich kann auch nicht wait statement verwenden

wie soll ich es dann machen???

danke im voraus

von Günter -. (guenter)


Lesenswert?

Plau Sein wrote:
> ich habe hier ein verilog programm:
...
> wie soll ich es dann machen???

- den Verilog Code nehmen
- einen Verilog-VHDL-Konverter damit bemühen
- mehr Informationen liefern was der always Block überhaupt machen soll 
(Funktion, synthesierbar oder nur für Simulation, etc.)

von Plau S. (radih)


Lesenswert?

VERILOG:

always
begin
  case(LUT_INDEX)
  0    :  LUT_DATA  <=  {6'h02,2'b0,8'h02};
  1    :  LUT_DATA  <=  {6'h03,2'b0,8'h01};
  2    :  LUT_DATA  <=  {6'h04,2'b0,8'h3F};
  3    :  LUT_DATA  <=  {6'h09,2'b0,8'h20};
  4    :  LUT_DATA  <=  {6'h10,2'b0,8'h3F};
  5    :  LUT_DATA  <=  {6'h11,2'b0,8'h3F};
  6    :  LUT_DATA  <=  {6'h12,2'b0,8'h2F};
  7    :  LUT_DATA  <=  {6'h13,2'b0,8'h2F};
  default  :  LUT_DATA  <=  16'h0000;
  endcase
end


VHDL CODE mit converter erzeugt:

  process
   begin
      case lut_index is
         when 0 =>
                  lut_data <= "000010" & "00" & "00000010";
         when 1 =>
                  lut_data <= "000011" & "00" & "00000001";
         when 2 =>
                  lut_data <= "000100" & "00" & "00111111";
         when 3 =>
                  lut_data <= "001001" & "00" & "00100000";
         when 4 =>
                  lut_data <= "010000" & "00" & "00111111";
         when 5 =>
                  lut_data <= "010001" & "00" & "00111111";
         when 6 =>
                  lut_data <= "010010" & "00" & "00101111";
         when 7 =>
                  lut_data <= "010011" & "00" & "00101111";
         when others  =>lut_data <= "0000000000000000";

      end case;
   end process;

compiler liefert:
Error (10442): VHDL Process Statement error at config.vhd(118): Process 
Statement must contain either a sensitivity list or a Wait Statement

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Was spricht denn dagegen eine sensitivity list zu verwenden?

von Plau S. (radih)


Lesenswert?

tja

ich kenn mich nicht so besonders gut aus mit vhdl

wusste nicht was ich in der sensitivity list eingeben soll:

sowas wie signal tmp : integer:=1;

dann process(tmp)

if (tmp='1') then



end if;
end process;


damit es immer laeuft oder soll ich es anders machen ?

von FPGA-Jeck (Gast)


Lesenswert?

in der sense list muss natürlich LUT_Index stehen.

Was du da baust ist ein encoder, schau mal hier:
http://www.mikrocontroller.net/articles/TTL74185

ein halbes dutzend arten, das in VHDL zu hacken.

von Plau S. (radih)


Lesenswert?

oooo stimmt bin ich dumm oder was :)))

danke dir

von Günter -. (guenter)


Lesenswert?

Plau Sein wrote:
> VERILOG:
>
> always
> begin
>   case(LUT_INDEX)
>   0    :  LUT_DATA  <=  {6'h02,2'b0,8'h02};
>   1    :  LUT_DATA  <=  {6'h03,2'b0,8'h01};
>   2    :  LUT_DATA  <=  {6'h04,2'b0,8'h3F};
>   3    :  LUT_DATA  <=  {6'h09,2'b0,8'h20};
>   4    :  LUT_DATA  <=  {6'h10,2'b0,8'h3F};
>   5    :  LUT_DATA  <=  {6'h11,2'b0,8'h3F};
>   6    :  LUT_DATA  <=  {6'h12,2'b0,8'h2F};
>   7    :  LUT_DATA  <=  {6'h13,2'b0,8'h2F};
>   default  :  LUT_DATA  <=  16'h0000;
>   endcase
> end
>

Würde mich mal interessieren ob das in Verilog überhaupt richtig ist. Es 
gibt einen Konstrukt:

always(*)

Aber wie FPGA-Jeck schon gesagt hat, der Prozess muss auf LUT_INDEX 
triggern, also sollte der Verilog Code eigentlich so aussehen:

always(LUT_INDEX)
...

Entsprechend müsstest du das auch in VHDL übersetzen können.

von Plau S. (radih)


Lesenswert?

in verilog funktioniert einwandfrei

in vhdl habe ich es mit process(lut_index) gemacht und der compiler hat 
nicht gemeckert :)

danke fuer die schnelle Hilfe

von FPGA-Jeck (Gast)


Lesenswert?

Aehm, konnt ich auch ab und zu gebrauchen, so ein Verilog>VHDL 
converter.
welchen verwendest Du? Ist der schmerzarm erhältlich?

von Plau S. (radih)


Lesenswert?

nee leider nicht,

Das X-HDL3 ist nicht kostenlos zu haben, aber:
Du kannst die Demoversion benutzen:

Der Inputfile darf nur eine bestimmte Groesse haben, sonst wird die 
Ausgabe nicht in einem File reingeschrieben, sondern nur in einem 
Outputfenster ausgegeben.

von high_speed (Gast)


Lesenswert?

> always
> begin
>  case(LUT_INDEX)
>  0    :  LUT_DATA  <=  {6'h02,2'b0,8'h02};
>  1    :  LUT_DATA  <=  {6'h03,2'b0,8'h01};
>  2    :  LUT_DATA  <=  {6'h04,2'b0,8'h3F};
>  3    :  LUT_DATA  <=  {6'h09,2'b0,8'h20};
>  4    :  LUT_DATA  <=  {6'h10,2'b0,8'h3F};
>  5    :  LUT_DATA  <=  {6'h11,2'b0,8'h3F};
>  6    :  LUT_DATA  <=  {6'h12,2'b0,8'h2F};
>  7    :  LUT_DATA  <=  {6'h13,2'b0,8'h2F};
>  default  :  LUT_DATA  <=  16'h0000;
>  endcase
>end

TRDB_LCM - 3.6 Inch Digital Panel Development Kit  ??
http://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&CategoryNo=39&No=78

Ich kann dir den VHDL-Code geben als QuartusII Projekt für das 
DE2-Board.

MfG
Holger

von high_speed (Gast)


Angehängte Dateien:

Lesenswert?

Hier das versprochene QuartusII Projekt.
(*.qar ist eine QuartusII Projekt-Archive-Datei)

MfG
Holger

von Ralph N. (ralph)


Lesenswert?

Es gibt gute Konverter Vlog -> VHDL ? Oo und warum schreibe ich auf 
Arbeit garde von hand VHDL Modelle in Verilog um ;? ...meine fresse xD

@ high_speed: Hast du schon viel mit dem DE2 Board angestellt? Zufällig 
I2C dabei gewesen?

Greetz Ralph

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.