Altera_Forum
Honored Contributor
18 years agowhat is wrong in this VHDL code?
Hey guys
i have this VHDL code but when i compile it i got an error message thx said: Error (10818): Netlist error at DSS_LUT.vhd(21): can't infer register for Hex_out[8] because it does not hold its value outside the clock edge. This is the code : library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; use ieee.std_logic_arith.all; entity DDS_LUT is port ( clk : in std_logic; --encoder_a : in std_logic; data_b : in integer range 3185 to 4215 ; --std_logic_vector(12 downto 0); Hex_out : out std_logic_vector (30 downto 0) --(need output with hexa not bin) ); end; architecture arc_DDS_LUT of DDS_LUT is begin process (data_b) begin if CLK'EVENT and CLK = '1' then case data_b is when 3185=> Hex_out <= ("1010101101110111011101110111100"); when 3186=> Hex_out <= ("1010101101101001110100000011011"); when 3187=> Hex_out <= ("1010101101011100001010001111011"); when 3188=> Hex_out <= ("1010101101001110100000011011010"); when 3189=> Hex_out <= ("1010101101000000110110100111010"); when 3190=> Hex_out <= ("1010101100110011001100110011001"); when 3191=> Hex_out <= ("1010101100100101100010111111001"); when 3192=> Hex_out <= ("1010101100010111111001001011001"); when 3193=> Hex_out <= ("1010101100001010001111010111000"); when 3194=> Hex_out <= ("1010101011111100100101100011000"); when 3195=> Hex_out <= ("1010101011101110111011101110111"); when 3196=> Hex_out <= ("1010101011100001010001111010111"); when 3197=> Hex_out <= ("1010101011010011101000000110110"); when 3198=> Hex_out <= ("1010101011000101111110010010110"); when 3199=> Hex_out <= ("1010101010111000010100011110110"); when 3200=> Hex_out <= ("1010101010101010101010101010101"); when 3201=> Hex_out <= ("1010101010011101000000110110101"); when 3202=> Hex_out <= ("1010101010001111010111000010100"); when 3203=> Hex_out <= ("1010101010000001101101001110100"); when 3204=> Hex_out <= ("1010101001110100000011011010011"); when 3205=> Hex_out <= ("1010101001100110011001100110011"); when 3206=> Hex_out <= ("1010101001011000101111110010011"); when 3207=> Hex_out <= ("1010101001001011000101111110010"); when 3208=> Hex_out <= ("1010101000111101011100001010010"); when 3209=> Hex_out <= ("1010101000101111110010010110001"); when 3210=> Hex_out <= ("1010101000100010001000100010001"); when 3211=> Hex_out <= ("1010101000010100011110101110000"); when 3212=> Hex_out <= ("1010101000000110110100111010000"); when 3213=> Hex_out <= ("1010100111111001001011000110000"); when 3214=> Hex_out <= ("1010100111101011100001010001111"); when 3215=> Hex_out <= ("1010100111011101110111011101111"); when others => Hex_out <= ("1111111111111111111111111111111"); end case; else Hex_out <=("0000000000000000000000000000000"); end if; end process; end arc_DDS_LUT ; what the code should do is : every time there is a rising edge I will check the input number I got and give an output number from the case statement