OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 1275|回复: 3

[ALTERA] FPGA设计高通滤波器遇到的问题

[复制链接]

1

主题

2

帖子

0

精华

新手入门

积分
9
金钱
9
注册时间
2023-5-20
在线时间
2 小时
发表于 2023-7-28 19:54:50 | 显示全部楼层 |阅读模式
2金钱
我现在想设计一个高通滤波器,基于之前低通滤波器的代码进行修改,现在对ast_sink_data和da_data的数据位不清楚怎么修改,导致现在输出的波形是正弦波。代码如下:

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

10

主题

3086

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
7782
金钱
7782
注册时间
2020-5-11
在线时间
3244 小时
发表于 2023-7-29 09:46:49 | 显示全部楼层
没见着代码,建议白天上班时间发帖.
专治疑难杂症
回复

使用道具 举报

1

主题

2

帖子

0

精华

新手入门

积分
9
金钱
9
注册时间
2023-5-20
在线时间
2 小时
 楼主| 发表于 2023-7-29 18:54:53 | 显示全部楼层
LcwSwust 发表于 2023-7-29 09:46
没见着代码,建议白天上班时间发帖.
  1. module FIR(
  2.     input                 sys_clk     ,  //系统时钟
  3.     input                 sys_rst_n   ,  //系统复位,低电平有效
  4.     //AD芯片接口
  5.     input     [7:0]       ad_data     ,  //AD输入数据
  6.     //模拟输入电压超出量程标志(本次试验未用到)
  7.     input                 ad_otr      ,  //0:在量程范围 1:超出量程
  8.     output                ad_clk      ,  //AD(AD9280)驱动时钟,最大支持32Mhz时钟

  9.          //DA芯片接口
  10.     output                da_clk      ,  //DA(AD9708)驱动时钟,最大支持125Mhz时钟
  11.     output    [7:0]       da_data      , //输出给DA的数据
  12.          output   test
  13. );

  14. assign test = sys_clk;        

  15. //pll实例化
  16. pll u_pll(
  17.         .areset(~sys_rst_n),
  18.         .inclk0(sys_clk),
  19.         .c0(ad_clk),
  20.         .c1(da_clk)
  21. );

  22. //

  23. //AD数据接收


  24. //FIR滤波器实例化
  25. wire [1:0] ast_sink_error;
  26. wire ast_sink_valid;
  27. wire [26:0] ast_source_data;
  28. wire [8:0] ast_sink_data;

  29. assign ast_sink_error = 2'b00;//输入无错误
  30. assign ast_sink_valid = 1'b1;//输入有效
  31. //assign ast_sink_data = {1'b0,ad_data[7:0]};
  32. assign ast_sink_data = {1'b1,~ad_data[7],ad_data[6:0]};

  33. fir u_fir(
  34.                 .clk              (ad_clk),          //                     clk.clk
  35.                 .reset_n          (sys_rst_n),        //                     rst.reset_n
  36.                 .ast_sink_data    (ast_sink_data),    //   avalon_streaming_sink.data
  37.                 .ast_sink_valid   (ast_sink_valid),   //                        .valid
  38.                 .ast_sink_error   (ast_sink_error),   //                        .error
  39.                
  40.                 .ast_source_data  (ast_source_data),  // avalon_streaming_source.data
  41.                 .ast_source_valid (), //                        .valid
  42.                 .ast_source_error ()  //                        .error
  43.         );



  44. //DA数据发送
  45. //assign         ast_source_data[26] = ~ast_source_data[26];
  46. assign   da_data = {~ast_source_data[26],ast_source_data[25:19]};

  47. //always @(posedge sys_clk or negedge sys_rst_n) begin
  48. //        if(!sys_rst_n) begin
  49. //                da_data <= 8'b0;
  50. //        end
  51. //        else if(en_flag == 1'b1)
  52. //                da_data <= data_in + 8'd128;
  53. //end

  54. endmodule
复制代码
回复

使用道具 举报

10

主题

3086

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
7782
金钱
7782
注册时间
2020-5-11
在线时间
3244 小时
发表于 2023-7-31 09:41:39 | 显示全部楼层

可惜我也不懂,
assign ast_sink_data = {1'b1,~ad_data[7],ad_data[6:0]};
意思是ad_data[7]输入信号是个反相的信号吗?为什么要这样呢?
专治疑难杂症
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-5-29 06:40

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表