어떻게 VHDL에 ROM을 설명할 수 있습니까?

S

skycanny

Guest
안녕하세요 : 모든 친구들. 내가 VHDL에 ROM을 설명하고자하지만, VHDL 내게 아주 새로운 것이 아니다. 그리고 나의이 ROM이 사인 웨이브 테이블을 저장할 수 있도록 설계되었습니다. 누가 좀 도와 줄래? 어떤 도움을 고맙게 될거야!
 
여기 VHDL in ROM을위한 기본적인 코드입니다! 희망이 도움이됩니다. [코드] 도서관의 IEEE; 사용 ieee.std_logic_1164.all; 엔티티 ROM이 포트입니다 (주소 : std_logic_vector (3 downto 0); 데이터 : 아웃 std_logic_vector (7 downto 0)); 엔드 엔티티 ROM과, 건축 ROM의 행동 유형 mem입니다 배열입니다 (0-2 ** 4 - 1) std_logic_vector (7 downto 0)의; 상수 my_Rom : mem : = (0 => "00000000", 1 => "00000001", 2 => "00000010", 3 = > "00000011", 4 => "00000100", 5 => "11110000", 6 => "11110000", 7 => "11110000", 8 => "11110000", 9 => "11110000", 10 => "11110000", 11 => "11110000", 12 => "11110000", 13 => "11110000", 15> "11110000")는 = 14 => "11110000"; 시작 프로세스 (주소)의 경우 주소를 시작할 때 "0000"=> 데이터 데이터 데이터 데이터 데이터 데이터 데이터 데이터 데이터 데이터 데이터 데이터 데이터 데이터 데이터 데이터 데이터
 
주셔서 감사합니다 제가 설명하려는 ROM이 너무 큽니다 답글. 다른 어떤 방법이 있습니까? 어떤 도움을 고맙게 될거야!
 
안녕 skycanny, 난 한테도 직접 숫자 합성기 또는 사인파 발생기를 생성하려고 생각합니다. 통해 UR 대상 장치이 뭐죠? 통해 UR은 자일링스 도구를 사용하면, 그것은 ROM과 자일링스 이세 도구를 사용하여 dds를 생성 쉽습니다. Coregen가 자동으로 u 출력 사인 주파수 단계와 해상도에 따라 사인을 생성하는 데 필요한 ROM을 생성합니다.
 
안녕하세요, Renjith : 당신은 바로 내가 자일링스 FPGA를 사용하여 DDS를 구현하려고하고 있습니다. 모듈 CoreGen 다른 대상 장치로 마이 그 레이션하기 어렵다 만들고 있기 때문에, 나는 CoreGen을 사용하고 싶지 않아요. 당신이 나를 도와 줄 래요? 어떤 도움을 고맙게 될거야!
 
당신이 (예를 들어, 자일링스 FPGA를 BRAMs 매뉴얼을 살펴 보길) 원하는 콘텐츠와 inittialized FPGA에의 RAM을 사용할 수 있습니다. 당신은 어떤 메모리에 기록이되지 않도록 몸조심해야합니다. 이 beautie는 easly 룩업 테이블을 코드가 필요없이 RAM을 초기화 수있다는 점입니다. disavantage은 FPGA에의 BRAMs을 낭비하지만 당신은 논리 리소스를 낭비하지 말자입니다.
 
당신은 알테라의 것들을 사용하려는 경우 경우에 사용 "BlockRam"디바이스는 자일링스 디바이스 또는 LPM 라이브러리를 사용하는 계획 ... 둘 다 매우 효율적입니다. 당신은 RW에 라인을 비활성화하여 롬 메모리로 BlockRam 취급하실 수 있습니다. 안부 maXer
 
내가 가장 좋은 방법은 FPGA에이 2 차원 배열을 사용하는 것입니다로 RAM을 넣고 있다고 생각 nand_gates에 동의합니다. 이것이 내가 많은 경우에 그렇게하지 않았 그것은 항상 성공의 방법입니다. 내가 자주 / 저렴, 그냥 FPGA에 몇 가지 RAM을 장착하는 게 나을 것 때문에 과거에하지 않은 대용량 메모리를 (설명을 원한다면,하지만, 이것은 카운트 핀, 귀하의 경우에는 진실이 아닐 수있다는 것을 이해 케이스 등등)를 시작합니다. 내가 nand_gates에 의해 설명된 방법을 사용하고 "생성"구문 같은 것을 사용하여이 아이디어를 확장하려고합니다. 종류 감사 밥 도움이 되었으면 좋겠
 
[인용 = skycanny] 안녕, Renjith : 나는 자일링스 FPGA를 사용하여 DDS를 구현하려합니다. 모듈 CoreGen 다른 대상 장치로 마이 그 레이션하기 어렵다 만들고 있기 때문에, 나는 CoreGen을 사용하고 싶지 않아요. [/ 인용]은 확인 ... 다른 자일링스의 가족이나 비 자일링스 가족이나의 ASIC 프로토 타입 대상려고 ru. 그것은 다른 자일링스 가정 그 자체이라면, coregen 위해 솔루션입니다 미국 대상이 아닌 자일링스 가족이있다면, 권리를 통해 UR u는 그렇게하지 포트 coregen 모듈을 수있다. 그래서, 추측이 되새김질요 무엇 DDS의 일반적인 vhdl 모델을 생성하려면 u. nandgates가 제안한대로 그 사건에서 u는 수동으로 ROM에 사인 coeffiecients를 저장할 수있다. 또, u는 통해 UR Coregen을 thrg DDS 모델을 생성 사인 coeffiencts을 생성하는 통해 UR coregen 도구를 사용하여, 다음 자동으로 안으로 당 통해 UR 사양 모든 계수를했습니다. mif 파일을 만듭니다. u는 감당이하고 vhdl 코드를 넣어 적 통해 UR의 목표 대상은 아무 상관이 있습니다.
 
나는 또한이 명령을 생성하는 것이 좋습니다. 그것은 하나가 코드를 위해 작성되었습니다 유사한 장치의 많은 유용합니다. 당신이 초보자있다면, 막 명령을 생성 VHDL 설명서를 참조하십시오. 자일링스 이세를 사용하지만 빠른 방법입니다 어쨌든 당신은 VHDL 코드를 알고 있어야합니다.
 
안녕 skycanny, 당신은 일을 할 수있는 높은 수준의 언어를 사용할 수 있습니다. (즉 겨우 C funtion을 fprint를) 함수와 같은 "fprint"을 사용하여 단일 파일에 롬 콘텐츠와 다른 단어 (nand_gates의 코드)를 출력합니다. 이 코드는 휴대용이다. 나 Matlab을 사용하여 비슷한 일을하고 있어요. Jarod 관해서
 
안녕하세요, jarodz : 감사합니다 제가 Matlab으로 범행을 저지하고 코드에 추가
 
사용 ieee.std_logic_1164.all을,, 이봐 ... 난 rom은 이쪽으로 [코드] 라이브러리의 IEEE 만들어진 엔티티 ROM이 (clk 포트입니다 :; 전자 std_logic 인 : std_logic에; 연구 : std_logic에; 데이터 : 아웃 std_logic_vector (7 downto 신호를 활성화; = 0 : : STD_LOGIC : '0 '=; 유형 mem은 std_logic_vector의 배열 (0-6063) (7 downto 0 정수 범위 0 6063 항목 : 0)가), 최종 엔티티 ROM과 건축 ROM의 행동 신호 나이다 ); 상수 my_Rom : mem : = 데이터 여기 ... ... ... ... 내가 이래 [/ 코드]는 내부 큰 코드를 넣으려면 거의 10,000 8bit 패킷을 가지고 내가 파일에 넣으려면 필요한 데이터를 생성 matlab (fprintf를 사용하여)에 스크립트를 만들었습니다. 내 문제는 지금 때 synthetizing 이세에, 이것은 완료하는 데 약 40 분이 소요되는 것입니다. 우리는 그것을 사용하실 수 없습니다부터 coregen 나를위한 솔루션을 isn't ... 나는 희망의 사람이 감사 나 좀 도와 줄래
 
그건, 당신은 큰 상수가 아니라 ROM과 블록을 만들었습니다 [인용 = moreins ]/.../ 문제는 지금이 거의 40 분 소요 경우 synthetizing 이세에 /.../[/ 인용이다]를 왜 컴파일러 에 논리 세포의 입력을 연결하는 데 너무 많은 시간이 필요 "한가"와 "0"의 설명을 따라한다 당신은 어떻게든 아래 예제와 같이 작성하는 경우이 도구 ROM을 인식한다 : [코드] 프로세스 (clk) 시작 (해당되는 경우 rising_edge (clk)) 다음 질문
 
널 위해 안녕하세요 감사합니다 이것이 내가 그 sinthetized 어젯밤 전체 코드입니다 답장. 그것은 약 40 분이 걸렸다. [코드] 도서관의 IEEE; 사용 ieee.std_logic_1164.all; 엔티티 ROM이 포트입니다 (clk : std_logic에; 이메일 : std_logic에; 연구 : std_logic에; 데이터 : 아웃 std_logic_vector (7 downto 0)); 엔드 엔티티 ROM을; 아키텍처 행동 ROM의 신호 나입니다 : 정수 범위 0 6,063 방법 : = 0; 신호 사용 : STD_LOGIC : = '0 '; 유형 mem은 std_logic_vector (7 downto 0)의 배열 (0-6063)입니다; 상수 my_Rom : mem : = ( " 10000011 ","10000100 ","10000101 ","10000011 ", .... .... ....은 .... ... .... 7000 더 라인); 시작 프로세스 (e)를하는 경우 시작 e'event 및 전자 = '1 '을 선택한 다음 활성화
 
봐, 배선 및 자원 사용량 보고서에서,, - 첫번째 [b를] 7-0로 파일의 [이 / B 조] 범위 나, 컴파일하고 신중하게 컴파일의 메시지를 읽을 때 변경 전 vhdl에 경험이 아니지만, 심지어 예를면 아래는 롬 메모리를 생성해야하고 당신에게 어떻게이 일을해야 힌트를주는 완벽한 사람은 아니, 난 그게 RTL 코드에 다음 별도의 텍스트 파일에 메모리 콘텐츠 가치를 유지하는 나을 것 같아, 그것은 필요 ypu을 수행하는 방법 / 핸드북 이세 설명서에 자신을보세요; [코드] 엔티티 ROM이 포트입니다 (clk : std_logic에; 이메일 : std_logic에; 연구 : std_logic에; data_out : 아웃 std_logic_vector (7 downto 0)); 엔드 롬; 아키텍처 rtl의 0 7 정수 범위 : : ROM에서 신호 나이다 = 0; - 범위 값 신호 설정 변경 : std_logic : = '0 '; 신호 데이터 : std_logic_vector (7 downto 0); 시작 프로세스 (전자) - 나도 돈' 이런 t이 시작 좋겠 네요 - 동기화로 clk를 사용하십시오. 신호 e'event 및 전자가 = '1 '로 누른 다음 사용하는 경우
 
당신은 매우 쉽습니다, 수호 성자 LMP ROM을 사용할 수 있습니다. 당신라도 자신을 그렇게하면 날> 말
 
하드웨어 기술 언어 코드에서 ROM이의 추론을위한 규칙은 도구에 의존하고 있습니다. 당신은 분명히 자일링스를 사용하는으로서, 귀하는 해당 소프트웨어 수첩을 확인해야합니다. 또한, ROM과 구조가 필요한 주소의 측면에서 기존의 장치 하드웨어에 의해 representable해야 / 또는 데이터 출력은 래치. 전형적인 이유는, ROM 또는 RAM이 추론이 실패하는 이유는 하드웨어에서 사용할 수 없습니다 논리 기능을 포함하는 것입니다. 이것이 당신의 디자인 = '1 '상태를 연구와 사건, 맞춰보세요. 당신은이 조건을 제거하는 것이 좋습니다 또한 신호를 먼저 설정합니다. 대부분의 ROM과 출력 포트 사이의 auxilary 등록이 경우에는 ROM이의 추론을 허용하도록해야합니다. [코드]면 연구 = '1 '다음 데이터
 

Welcome to EDABoard.com

Sponsor

Back
Top