vhdl 코딩중인데 질문좀 드려요 ~
안녕하세요 ^^ 요즘 verilog 소스를 vhdl로 옮기는중인데 제가 부족해서 인지 잘모르겠더라고요.
reg [7:0] mem[0:33];
...
assign conector60[ 7: 0] = mem[0][7:0];
이부분를 vhdl로 짜려하는데 어떻게 해야할지
여기저기 찾아봐도 vector중 일부를 선택하여 한번에 옮기는 부분은 찾기 어렵더라구요
물론 한비트 한비트 지정하여 입력하면 되지만 그러기엔 코드가 너무 늘어져 보이고
그래서 for로 한번해보자 생각해서 라고 짜봤는데 ;;
에러가뜨는군요 ; quartus인데
for ii in 7 downto 0 loop
connector60(ii) <= mem1(ii);
end loop;
Error (10500): VHDL syntax error at lcsu.vhd(49) near text "for"; expecting "end", or "(", or an identifier ("for" is a reserved keyword), or a concurrent statement
Error (10500): VHDL syntax error at lcsu.vhd(51) near text "loop"; expecting ";", or an identifier ("loop" is a reserved keyword), or "architecture"
대충 요런에러가 ;; 무슨원인인지 잘모르겠네요 ;
질문의 요지는
1. vector중 일부를 선택하여 한번에 옮기는 방법
2. 위 for문에서 error가 뜨는 원인 & 해결책
3. vhdl에서 이중 배열 사용하는 방법
4. assign adc_data_reoder = {adc_data[0],adc_data[1],adc_data[2],adc_data[3],adc_data[4],adc_data[5],adc_data[6],adc_data[7],adc_data[8],adc_data[9],adc_data[10],adc_data[11]};
이걸 vhdl로 짜려면 어떻게 해야 할까요?
입니다.
답변부탁드립니다.
오늘하루도 화이팅!
1. verilog에서의 [x:y] 대신에 (x
1. verilog에서의 [x:y] 대신에 (x downto y)로 쓰시면 됩니다.
dest <= source(3 downto 0);
dest(3 downto 0) <= source(7 downto 4);
2. 글쎄요, 이 부분만 봐서는 잘 모르겠네요.
3. 배열 type을 선언하고 signal을 그 type으로 선언해서 씁니다.
type array_t is array(0 to 33) of std_logic_vector(7 downto 0);
signal mem : array_t;
....
conector60 <= mem(0);
4. bit slice는 []대신 ()로, concatenation은 {} 없이 , 대신 &를 사용합니다.
a_reorder <= a(0) & a(1) & a(2);
simple life, high thinking
댓글 달기