Verilog를 사용하여 사인파 파형에 감쇠량을 적용하려고합니다. 하드웨어 제약으로 단순히 곱셈에 곱셈을 사용하지 못합니다. 사인 값과 엔벨로프 값은 단순히 1-exp (-x)를 사용하여 ROM에 저장되어 모든 것을 빠르게합니다.곱셈을하지 않고 파형에 감쇠량을 적용하십시오.
지금은 사인 값이 더 크면 사인 값에서 지수 값을 빼서 간단히 출력 샘플을 계산합니다. 지수 값이 사인 값보다 큰 경우 출력 샘플은 0입니다. 이것은 잘 작동하지만 사인파의 현재 위치에 의해 뺄셈하는 현재 지수 값은 사인파가 최대 일 때 전체 값을 뺀 다음 사인 값이 0 일 때 0을 뺍니다.
누구든지 제공 할 수있는 조언을 주시면 감사하겠습니다. 필요한 경우 자세한 내용을 제공해 드릴 수 있습니다. 이것이 Verilog 질문에 적절한 장소가 아니면 다른 곳에서 더 나은 점이 있습니까?
감사합니다.
수학과 관련하여 도움이 필요하면 http://math.stackexchange.com/ – JohnP
을 확인하십시오. 따라서 사인파의 크기를 기준으로 해당 지수 값이 해당 사인 값과 "일치합니까?" 예. y = 5sin (x) ... decay = 1-exp (-y)? "전체 값을 뺍니다"라고 말하면 지수가 음의 무한대에서 1로 변합니다. 음의 무한대가 전체 값이 1입니까? 쇠퇴하는 사인파를 찾고 있다면 나는 당신이 찾고있는 모든 기능을 따라갈 BRAM 풋내기를 만들 수 있다고 확신합니다. 사인 파형의 4 분의 1 (공간을 필요로하는 것 모두)을 해당 출력 크기에 매핑하려고합니까? –
쉬프트 권한을 사용하여 2로 간단한 나누기를 할 수 있습니다. 그러면 출력값에서 적당한 선형 감쇠가 발생합니다. 결과를 확장하기 위해 서명하는 것을 잊지 마십시오 (IEEE 라이브러리 루틴이 있습니다) –