打印
[FPGA]

基于fpga的FIR滤波器设计(附上源码代码下载)

[复制链接]
1102|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
明德扬fpga|  楼主 | 2018-11-16 16:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
fir_prj.rar (1.19 KB)


3 设计实现字数限制,完整源码及完整**下载技术交流群:97925396
1.1 顶层接口
新建目录:D:\mdy_book\fir_prj在该目录中,新建一个名为fir_prj.v的文件,并用GVIM打开,开始编写代码。
我们要实现的功能,概括起来就是FPGA产生控制AD9709,让其中的通道A未滤波的正弦信号,让通道B输出滤波后的正弦信号。为了控制AD9709的工作模式,就要控制AD9709的MODE、SLEEP管脚;为了控制通道A,就需要控制AD9729的CLK1、WRT1、DB7~0P1管脚;为了控制通道B,就需要控制AD9729的CLK2、WRT2、DB7~0P2管脚。根据设计目标的要求,整个工程需要以下信号:
1. 使用clk连接到晶振,表示50M时钟的输入。
2. 使用rst_n连接到按键,表示复位信号。
3. 使用3位信号key,表示三位拨码开关。
4. 使用dac_mode信号连接到AD9709的MODE管脚,用来控制其工作模式。
5. 使用dac_sleep信号连接到AD9709的SLEEP管脚,用来控制其睡眠模式。
6. 使用dac_clka信号连接到AD9709的CLK1管脚,用来控制通道A的时钟。
7. 使用dac_wra信号连接到AD9709的WRT1管脚,用来控制通道A的写使能。
8. 使用8位信号dac_da连接到AD9709的DB7~0P1管脚,用来控制通道A的写数据。
9. 使用dac_clkb号连接到AD9709的CLK2脚,用来控制通道B时钟。
10. 使用dac_wrb号连接到AD9709的WRT2脚,用来控制通道B使能。
11. 使用8位信号dac_db接到AD9709的DB7~0P2脚,用来控制通道B写数据。
综上所述,我们这个工程需要11个信号,时钟clk,复位rst_n,拨码开关的输入key,dac_mode、dac_sleep、dac_clka、dac_wra、dac_da、dac_clkb、dac_wrb和dac_db信号,其中dac_da和dac_db是8位信号,其他都是1位信号。下面表格表示了硬件电路图的连接关系。
器件
AD9709管脚
原理图信号
FPGA管脚
FPGA工程信号
U8
MODE
DAC_MODE
Y4
dac_mode
SLEEP
DAC_SLEEP
H2
dac_sleep
CLK1
DA_CLKA
R2
dac_clka
WRT1
DA_WRA
U1
dac_wra
DB7P1
DAC_DA7
AA1
dac_da[7]
DB6P1
DAC_DA6
Y2
dac_da[6]
DB5P1
DAC_DA5
Y1
dac_da[5]
DB4P1
DAC_DA4
W2
dac_da[4]
DB3P1
DAC_DA3
W1
dac_da[3]
DB2P1
DAC_DA2
V2
dac_da[2]
DB1P1
DAC_DA1
V1
dac_da[1]
DB0P1
DAC_DA0
U2
dac_da[0]
CLK2
DA_CLKB
R1
dac_clkb
WRT2
DA_WRB
P2
dac_wrb
DB7P2
DAC_DB7
P1
dac_db[7]
DB6P2
DAC_DB6
N2
dac_db[6]
DB5P2
DAC_DB5
N1
dac_db[5]
DB4P2
DAC_DB4
M2
dac_db[4]
DB3P2
DAC_DB3
M1
dac_db[3]
DB2P2
DAC_DB2
J1
dac_db[2]
DB1P2
DAC_DB1
J2
dac_db[1]
DB0P2
DAC_DB0
H1
dac_db[0]
X1
SYS_CLK
G1
clk
K1
SYS_RST
AB12
rst_n
将module的名称定义为fir_prj,代码如下:
1
2
3
4
5
6
7
8
9
module fir_prj(
           clk       ,
           rst_n     ,
           key       ,
           dac_mode ,
           dac_sleep ,
           dac_clka  ,
           dac_da   ,
           dac_wra  ,
           dac_clkb  ,
           dac_db   ,
           dac_wrb               
           );
其中clk、rst_n是1位的输入信号,dac_da和dac_db是8位的输出信号,key是3位输入信号,dac_mode,dac_clka,dac_wra,dac_sleep,dac_clkb,dac_wrb是一位输出信号。
1
2
3
4
5
6
7
input             clk        ;
input             rst_n      ;
input  [ 3-1:0]    key        ;
output            dac_mode ;
output            dac_clka  ;
output [ 8-1:0]    dac_da    ;
output            dac_wra   ;
output            dac_sleep ;
output            dac_clkb  ;
output [ 8-1:0]    dac_db    ;
output            dac_wrb   ;



相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:官网:www.mdy-edu.com

30

主题

43

帖子

3

粉丝