2012-09-09 23 views
5

Próbuję przetłumaczyć program verilog na vhdl i natknąłem się na stwierdzenie, w którym operator znaku zapytania (?) Jest używany w programie verilog.Verilog znak zapytania (?) Operator

Poniżej znajduje się kod verilog;

1 module music(clk, speaker); 
2 input clk; 
3 output speaker; 
4 parameter clkdivider = 25000000/440/2; 

5 reg [23:0] tone; 
6 always @(posedge clk) tone <= tone+1; 

7 reg [14:0] counter; 
8 always @(posedge clk) if(counter==0) counter <= (tone[23] ? clkdivider-1 : clkdivider/2-1); else counter <= counter-1; 

9 reg speaker; 
10 always @(posedge clk) if(counter==0) speaker <= ~speaker; 
11 endmodule 

Nie rozumiem ósmej linii, czy ktoś mógłby rzucić trochę światła na to? Przeczytałem na stronie internetowej świata asic, że znakiem zapytania jest Verilog zastępca dla postaci Z. Ale nie rozumiem, dlaczego jest używany w tym kontekście.

poważaniem

Odpowiedz

4

Innym sposobem pisania, na przykład następujących Verilog:

q <= tone[23] ? clkdivider-1 : clkdivider/2-1; 

w VHDL byłoby:

q <= clkdivider-1 when tone[23] else clkdivider/2-1; 
+0

Dlatego deklaracje są tak istotne w pytaniach. Warunek musi być wartością boolowską. Jedynym dźwiękiem [23] spełniającym te kryteria jest tonacja BOOLEAN_VECTOR. – user1155120

Powiązane problemy