Kategori arşivi: diğer
Usage of Arrays at Vhdl
Hi everyone, At my this post we will learn how to define and use arrays. I created an array that has 4 elements and they are 6bits long individually.library ieee; use ieee.std_logic_1164.all; entity sonsonson is port( A : out std_logic_vector (5 downto 0); B : out std_logic_vector (5 downto 0); C : out std_logic_vector (5 downto 0); D : out std_logic_vector (5 downto 0)); end sonsonson; architecture behavior of sonsonson is type mydata is array (0 to 3) of std_logic_vector (5 downto 0); signal gokhan : mydata; begin gokhan(0) <="111111"; gokhan(1) <="111000"; gokhan(2) <="000111"; gokhan(3) <="110011"; A <= gokhan(0); B <= gokhan(1); C <= gokhan(2); D <= gokhan(3); --ozturkgokhan.com end behavior;Modelsim Output
Best Wishes, Gökhan Öztürk
Creating Butterworth and Chebyshev filters with by Using Sptool
Hi, at my previous post i talked about the filters and input-output relationship.
As you remember i mentioned that i will design the discrete-time
filters with Butterworth and Chebyshev approximations.
Let’s see the properties of the filter again.
0.8 < |H(exp(jw))| < 1 for 0 < w < 0.22*pi
|H(exp(jw))| < 0.26 for 0.32*pi < w < pi
For able to desing filter we will use “sptool” command. When we write ‘sptool’ to command window, we get SPTOOL:startup.spt window.
Then click ‘FIRbp[design]’ and ‘New’.
So we have a new window like ‘Filter Design & Analysis Tool-(FIRbp)’, change the values of filter at the blue arrows and right click to ‘Magnitude (DB)’ at the red arrow and hange as given. Finally, click ‘Design Filter’. After that click to ‘Edit’ and use ‘convert to single section’.
Now we will get our numerator and denominator coefficients of filter. Use this way; ‘File -> export (change name of coefficients) -> export’.
Name numerator coefficients b1,denominator coefficients a1 for Butterworth filter and b2,a2 for
Chebyshev filter.
f=linspace(-1,1,length(data)) BW = filter(b1,a1,data) CS1 = filter(b2,a2,data) figure; subplot(3,1,1) stem(f,fftshift(abs(fft(data)))); title('Magnitude response of my input signal'); grid on; subplot(3,1,2) stem(f,fftshift(abs(fft(BW)))); title('Magnitude response of my output,filtered by Butterworth '); grid on; subplot(3,1,3) stem(f,fftshift(abs(fft(CS1)))); title('Magnitude response of my output,filtered by Chebyshev'); grid on;
Let’s examine the differences Butterworth and Chebyshev approximations.
As you see transition region at Chebyshev approximation is smaller than Butterworth approximation.
But at the passband region of Chebyshev approximation has ripples and filters the signal around zero.
I hope it would be helpful to you.
Thanks.
gökhan öztürk