OpenEdv-开源电子网

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

[ALTERA] 怎么解决综合产生的这个问题,求助

[复制链接]

2

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2019-12-1
在线时间
18 小时
发表于 2020-3-30 19:18:06 | 显示全部楼层 |阅读模式
11金钱
module qsys_yu_yin_shi_bie(
    input           sys_clk,
    input           sys_rst_n,

    //SDRAM interface
    output          sdram_clk,
    output          sdram_cke,
    output          sdram_cs_n,
    output          sdram_ras_n,
    output          sdram_cas_n,
    output          sdram_we_n,
    output  [1:0]   sdram_ba,
    output  [12:0]  sdram_addr,
    output  [ 1:0]  sdram_dqm,
    inout   [15:0]  sdram_data,

    //EPCS FLASH interface
    output          epcs_dclk,
    output          epcs_sce,
    output          epcs_sdo,
    input           epcs_data0,

    //LCD interface
    inout   [15:0]  lcd_data,
    output          lcd_bl,
    output          lcd_cs_n,
    output          lcd_wr_n,
    output          lcd_rd_n,
    output          lcd_rs,
    output          lcd_rst_n,

    //key interface
    input   [3:0]   key,
    output  [3:0]   led,

    //WM8978 interface
    input           adu_bclk,       //WM8978位时钟
    input           aud_lrc,        //对齐信号
    input           aud_adcdat,     //音频输入
    output          aud_mclk,       //WM8978主时钟
    output          aud_dacdat,     //音频输出
    output          aud_scl,        //WM8978的SCL信号
    inout           aud_sda         //WM8978的SDA信号
);

parameter      TIME_RECORD = 24'd5760000;    // 60秒

wire   [15:0]  dac_data            ;         // FPGA发送的音频数据
wire           wr_en               ;         // SDRAM fifo接口写入数据使能
wire   [15:0]  wr_data             ;         // SDRAM fifo接口写入数据
wire           rd_en               ;         // SDRAM fifo接口读出数据使能
wire           clk_100m            ;
wire           clk_100m_shift      ;
wire           rst_n               ;
wire           locked              ;
wire           clk_2m              ;
wire   [15:0]  rd_data             ;         // SDRAM fifo读出的数据
wire           sdram_init_done     ;         // SDRAM 初始化完成信号
wire           neg_play_key        ;         // 录音键的下降沿
wire           wr_load             ;         // 写地址寄存 & fifo清空
wire           rx_done             ;         // 音频数据接收完成
wire           tx_done             ;         // 音频数据发送完成
wire           record_key          ;         // 消抖后的key0
wire           play_key            ;         // 消抖后的key1
wire   [15:0]  adc_data            ;         // FPGA接收的音频数据
wire   [ 3:0]  key_value           ;         // 按键消抖后的输出

assign rst_n = sys_rst_n & locked;
assign sdram_clk = clk_100m_shift;
assign aud_mclk = clk_2m;

//PLL_clk
pll_clk u_pll_clk(
        .areset     (~sys_rst_n),
        .inclk0     (sys_clk),
        .c0         (clk_100m),
        .c1         (clk_100m_shift),
    .c2         (clk_2m),
        .locked     (locked)
);



yu_yin_shi_bie u_yu_yin_shi_bie(
        .clk_clk          (sys_clk),
        .reset_reset_n    (sys_rst_n),
        .epcs_dclk        (epcs_dclk),
        .epcs_sce         (epcs_sce),
        .epcs_sdo         (epcs_sdo),
        .epcs_data0       (epcs_data0),
        .lcd_data_export  (lcd_data),
        .lcd_bl_export    (lcd_bl),
        .lcd_cs_n_export  (lcd_cs_n),
        .lcd_rd_n_export  (lcd_rd_n),
        .lcd_rs_export    (lcd_rs),
        .lcd_rst_n_export (lcd_rst_n),
        .lcd_wr_n_export  (lcd_wr_n),
        .sdram_32m_addr   (sdram_addr),
        .sdram_32m_ba     (sdram_ba),
        .sdram_32m_cas_n  (sdram_cas_n),
        .sdram_32m_cke    (sdram_cke),
        .sdram_32m_cs_n   (sdram_cs_n),
        .sdram_32m_dq     (sdram_dq),
        .sdram_32m_dqm    (sdram_dqm),
        .sdram_32m_ras_n  (sdram_ras_n),
        .sdram_32m_we_n   (sdram_we_n),
        .key_export       (key),
        .led_export       (led)
);



//例化WM89878控制模块
wm8978_ctrl u_wm8978_ctrl(
    //system clock
    .clk                (sys_clk    ),        // 时钟信号
    .rst_n              (rst_n      ),        // 复位信号
    //wm8978 interface
    //audio interface(master mode)
    .aud_bclk           (aud_bclk   ),        // WM8978位时钟
    .aud_lrc            (aud_lrc    ),        // 对齐信号
    .aud_adcdat         (aud_adcdat ),        // 音频输入
    .aud_dacdat         (aud_dacdat ),        // 音频输出
    //control interface
    .aud_scl            (aud_scl    ),        // WM8978的SCL信号
    .aud_sda            (aud_sda    ),        // WM8978的SDA信号
    //user interface
    .dac_data           (dac_data   ),        // 输出的音频数据
    .adc_data           (adc_data   ),        // 录音的数据
    .rx_done            (rx_done    ),        // 一次接收完成
    .tx_done            (tx_done    )         // 一次发送完成
);

//例化消抖模块
key_debounce u_key_debounce(
    .sys_clk            (sys_clk     ),       // 外部50M时钟
    .sys_rst_n          (rst_n       ),       // 复位信号,低有效
    .key                (key         ),       // 外部按键输入
    .key_flag           (),                   // 按键数据有效信号
    .key_value          (key_value   )        // 按键消抖后的数据
);

//SDRAM 控制器顶层模块,封装成FIFO接口
//SDRAM 控制器地址组成: {bank_addr[1:0],row_addr[12:0],col_addr[8:0]}
sdram_top u_sdram_top(
    .ref_clk            (clk_100m),           // sdram 控制器参考时钟
    .out_clk            (clk_100m_shift),     // 用于输出的相位偏移时钟
    .rst_n              (rst_n   ),           // 系统复位,低电平有效

    //用户写端口
    .wr_clk             (aud_bclk),           // 写端口FIFO: 写时钟
    .wr_en              (wr_en   ),           // 写端口FIFO: 写使能
    .wr_data            (wr_data ),           // 写端口FIFO: 写数据
    .wr_min_addr        (24'd0   ),           // 写SDRAM的起始地址
    .wr_max_addr        (TIME_RECORD),        // 写SDRAM的结束地址
    .wr_len             (10'd512 ),           // 写SDRAM时的数据突发长度
    .wr_load            (wr_load ),           // 写端口复位: 复位写地址,清空写FIFO

    //用户读端口
    .rd_clk             (aud_bclk),           // 读端口FIFO: 读时钟
    .rd_en              (rd_en   ),           // 读端口FIFO: 读使能
    .rd_data            (rd_data ),           // 读端口FIFO: 读数据
    .rd_min_addr        (24'd0   ),           // 读SDRAM的起始地址
    .rd_max_addr        (TIME_RECORD),        // 读SDRAM的结束地址
    .rd_len             (10'd512 ),           // 从SDRAM中读数据时的突发长度
    .rd_load            (neg_play_key),       // 读端口复位: 复位读地址,清空读FIFO

     //用户控制端口
    .sdram_read_valid   (1'b1    ),           // SDRAM 读使能
    .sdram_init_done    (sdram_init_done),    // SDRAM 初始化完成标志

    //SDRAM 芯片接口
    .sdram_clk          (sdram_clk ),         // SDRAM 芯片时钟
    .sdram_cke          (sdram_cke ),         // SDRAM 时钟有效
    .sdram_cs_n         (sdram_cs_n),         // SDRAM 片选
    .sdram_ras_n        (sdram_ras_n),        // SDRAM 行有效
    .sdram_cas_n        (sdram_cas_n),        // SDRAM 列有效
    .sdram_we_n         (sdram_we_n),         // SDRAM 写有效
    .sdram_ba           (sdram_ba  ),         // SDRAM Bank地址
    .sdram_addr         (sdram_addr),         // SDRAM 行/列地址
    .sdram_data         (sdram_data),         // SDRAM 数据
    .sdram_dqm          (sdram_dqm )          // SDRAM 数据掩码
);

//例化录音控制模块
record_ctrl #(.TIME_RECORD (TIME_RECORD)
) u_record_ctrl(
    //system clock
    .clk                (aud_bclk  ),         // 时钟信号(12MHz)
    .rst_n              (rst_n     ),         // 复位信号
    //SDRAM interface
    .wr_data            (wr_data   ),         // SDRAM fifo接口写入数据
    .rd_data            (rd_data   ),         // SDRAM fifo读出的数据
    .wr_en              (wr_en     ),         // SDRAM fifo接口写入数据使能
    .wr_load            (wr_load   ),         // 写地址寄存 & fifo清空
    .rd_en              (rd_en     ),         // SDRAM fifo接口读出数据使能
    .sdram_init_done    (sdram_init_done),    // SDRAM 初始化完成信号
    //user interface
    .adc_data           (adc_data  ),         // FPGA接收的音频数据
    .dac_data           (dac_data  ),         // FPGA发送的音频数据
    .record_key         (key_value[2]),       // 消抖后的key0做为录音按键
    .play_key           (key_value[1]),       // 消抖后的key1做为播放按键
    .rx_done            (rx_done   ),         // 音频数据接收完成
    .tx_done            (tx_done   ),         // 音频数据发送完成
    .neg_play_key       (neg_play_key)        // 录音键的下降沿
);

endmodule




QQ图片20200330191536.png

最佳答案

查看完整内容[请看2#楼]

顶层端口sdram相关的几个引脚,你同时在两个模块里作了例化
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

1979

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5520
金钱
5520
注册时间
2018-10-21
在线时间
1561 小时
发表于 2020-3-30 19:18:07 | 显示全部楼层
顶层端口sdram相关的几个引脚,你同时在两个模块里作了例化
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165186
金钱
165186
注册时间
2010-12-1
在线时间
2106 小时
发表于 2020-3-31 01:01:52 | 显示全部楼层
帮顶
回复

使用道具 举报

2

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2019-12-1
在线时间
18 小时
 楼主| 发表于 2020-4-1 08:08:15 | 显示全部楼层
QinQZ 发表于 2020-3-31 09:40
顶层端口sdram相关的几个引脚,你同时在两个模块里作了例化

求教,那要怎么才能让两个模块都用sdram的引脚?
回复

使用道具 举报

3

主题

1979

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5520
金钱
5520
注册时间
2018-10-21
在线时间
1561 小时
发表于 2020-4-1 10:47:32 | 显示全部楼层
本帖最后由 QinQZ 于 2020-4-1 10:51 编辑
sabers 发表于 2020-4-1 08:08
求教,那要怎么才能让两个模块都用sdram的引脚?

顶层模块的引脚只能由一个模块驱动。如果想要多个模块驱动同一个引脚,只能不同时刻下,不同的模块来驱动这些引脚,即添加一个标志,用来选择什么情况和哪个模块连接。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-10-3 09:25

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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