- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
                        查看更多
                        
                    
                数字信号处理的FPGA实现
学院:
班级:
小组成员:
第一题:
要求:用无符号DA分布式)算法实现3个系数{2,3,1}的FIR滤波器。
1、原理:
系数c[n]为已知常数, x[n]为变量
则
重新分布求和次序则有:
2、移位-加法器DA结构:
3、三阶FIR滤波器,设系数位宽为3,值为c[0]=2, c[1]=3, c[2]=1,则实现 f (c[n], xb[n]的LUT为:
LUT查找表:
则结果应为:
4、代码清单:
DAfilterFIR滤波器)、LUT查找表)、DAtesttestbench文件)
1)DAfilterFIR滤波器)代码:
LIBRARY ieee。              
USE ieee.std_logic_1164.ALL。
USE ieee.std_logic_arith.ALL。
PACKAGE da_package IS    
  COMPONENT LUT        ----元件例化
    PORT (table_in   : IN   STD_LOGIC_VECTOR(2 DOWNTO 0。
table_out  : OUT  INTEGER RANGE 0 TO 6。
  END COMPONENT。
END da_package。
LIBRARY work。
USE work.da_package.ALL。        -----使用包
LIBRARY ieee。               
USE ieee.std_logic_1164.ALL。
USE ieee.std_logic_arith.ALL。
ENTITY DAfilter IS                      
       PORT (clk  : IN STD_LOGIC。
             x_in0, x_in1, x_in2 :IN  STD_LOGIC_VECTOR(2 DOWNTO 0。
y    : OUT INTEGER RANGE 0 TO 63。
END DAfilter。
ARCHITECTURE fpga OF DAfilter IS
  TYPE STATE_TYPE IS (s0, s1。
  SIGNAL state    : STATE_TYPE。
  SIGNAL x0, x1, x2, table_in : STD_LOGIC_VECTOR(2 DOWNTO 0。
  SIGNAL table_out : INTEGER RANGE 0 TO 7。
BEGIN
table_in(0 = x0(0。
table_in(1 = x1(0。
table_in(2 = x2(0。
  PROCESS              
    VARIABLE p    : INTEGER RANGE 0 TO 63。-- temp. register
    VARIABLE count : INTEGER RANGE 0 TO 3。 -- counts shifts
  BEGIN
    WAIT UNTIL clk = 1。  
    CASE state IS
      WHEN s0 =       ---初始化状态
state = s1。
count := 0。
p := 0。
x0 = x_in0。
x1 = x_in1。
x2 = x_in2。
      WHEN s1 =
        IF count = 3 THEN   ---count=3结束滤波
          y = p。           
state = s0。      
        ELSE
          p := p / 2 + table_out * 4。----最终p=x(0*4/2/2+x(1*4/2+x(2*4。
          x0(0 = x0(1。      ----向右移位
x0(1 = x0(2。
x1(0 = x1(1。
x1(1 = x1(2。
x2(0 = x2(1。
x2(1 = x2(2。
count := count + 1。
state = s1。
        END IF。
    END CASE。
  END PROCESS。
 LC_Table0: LUT
    PORT MAP(table_in = table_in, table_out = table_out。
END fpga。
2)LUT查找表)代码:
LIBRARY ieee。
USE ieee.std_logic_1164.ALL。
USE ieee.std_logic_arith.ALL。
ENTITY LUT IS
    
                 原创力文档
原创力文档 
                        

文档评论(0)