【Altera SoC】基于SOPC的单通道TDC设计(1

http://bbs.eeworld.com.cn/thread-465441-1-1.html

1 硬件系统的构建

经过“基于超前进位延时链的时间数字转换器”和“延时链测试以及亚稳态分析”两篇文章后,开始着手构建基于SOPC的单通道TDC。

最终构建的硬件系统框图如图 11所示。Top_sch的内部结构图如图 12所示,其中各模块的相关说明请参见前文。Sysfifo的内部框图如图 13所示。Nios II硬件系统连接如图 14所示。

图 11系统的顶层框图

Top_sch为单通道TDC;sysfifo为先入先出存储器,主要作用是起到数据缓冲作用,因为tdc的时钟频率为300MHz,而Nios II的频率为100MHz,端口操作频率为10MHz赫兹;audio—_nios为基于Nios II的硬件系统。

图 12 top_sch的RTL视图

图 13 sysfifo内部框图

 

图 14 Nios II硬件系统连接图

硬件系统源程序如下:

1.1 系统顶层源程序

module tdc1000_soc(

      ///input tdc///

                input sin,

 

      / ADC /

      inout              ADC_CS_N,

      output             ADC_DIN,

      input              ADC_DOUT,

      output             ADC_SCLK,

 

      / AUD /

      input              AUD_ADCDAT,

      inout              AUD_ADCLRCK,

      inout              AUD_BCLK,

      output             AUD_DACDAT,

      inout              AUD_DACLRCK,

      output             AUD_XCK,

 

      / CLOCK2 /

      input              CLOCK2_50,

 

      / CLOCK3 /

      input              CLOCK3_50,

 

      / CLOCK4 /

      input              CLOCK4_50,

 

      / CLOCK /

      input              CLOCK_50,

 

      / DRAM /

      output      [12:0] DRAM_ADDR,

      output      [1:0]  DRAM_BA,

      output             DRAM_CAS_N,

      output             DRAM_CKE,

      output             DRAM_CLK,

      output             DRAM_CS_N,

      inout       [15:0] DRAM_DQ,

      output             DRAM_LDQM,

      output             DRAM_RAS_N,

      output             DRAM_UDQM,

      output             DRAM_WE_N,

 

      / FAN /

      output             FAN_CTRL,

 

      / FPGA /

      output             FPGA_I2C_SCLK,

      inout              FPGA_I2C_SDAT,

 

      / GPIO /

      inout     [35:0]         GPIO_0,

      inout     [35:0]         GPIO_1,


 

      / HEX0 /

      output      [6:0]  HEX0,

 

      / HEX1 /

      output      [6:0]  HEX1,

 

      / HEX2 /

      output      [6:0]  HEX2,

 

      / HEX3 /

      output      [6:0]  HEX3,

 

      / HEX4 /

      output      [6:0]  HEX4,

 

      / HEX5 /

      output      [6:0]  HEX5,

 

`ifdef ENABLE_HPS

      / HPS /

      inout              HPS_CONV_USB_N,

      output      [14:0] HPS_DDR3_ADDR,

      output      [2:0]  HPS_DDR3_BA,

      output             HPS_DDR3_CAS_N,

      output             HPS_DDR3_CKE,

      output             HPS_DDR3_CK_N,

      output             HPS_DDR3_CK_P,

      output             HPS_DDR3_CS_N,

      output      [3:0]  HPS_DDR3_DM,

      inout       [31:0] HPS_DDR3_DQ,

      inout       [3:0]  HPS_DDR3_DQS_N,

      inout       [3:0]  HPS_DDR3_DQS_P,

      output             HPS_DDR3_ODT,

      output             HPS_DDR3_RAS_N,

      output             HPS_DDR3_RESET_N,

      input              HPS_DDR3_RZQ,

      output             HPS_DDR3_WE_N,

      output             HPS_ENET_GTX_CLK,

      inout              HPS_ENET_INT_N,

      output             HPS_ENET_MDC,

      inout              HPS_ENET_MDIO,

      input              HPS_ENET_RX_CLK,

      input       [3:0]  HPS_ENET_RX_DATA,

      input              HPS_ENET_RX_DV,

      output      [3:0]  HPS_ENET_TX_DATA,

      output             HPS_ENET_TX_EN,

      inout       [3:0]  HPS_FLASH_DATA,

      output             HPS_FLASH_DCLK,

      output             HPS_FLASH_NCSO,

      inout              HPS_GSENSOR_INT,

      inout              HPS_I2C1_SCLK,

      inout              HPS_I2C1_SDAT,

      inout              HPS_I2C2_SCLK,

      inout              HPS_I2C2_SDAT,

      inout              HPS_I2C_CONTROL,

      inout              HPS_KEY,

      inout              HPS_LED,

      inout              HPS_LTC_GPIO,

      output             HPS_SD_CLK,

      inout              HPS_SD_CMD,

      inout       [3:0]  HPS_SD_DATA,

      output             HPS_SPIM_CLK,

      input              HPS_SPIM_MISO,

      output             HPS_SPIM_MOSI,

      inout              HPS_SPIM_SS,

      input              HPS_UART_RX,

      output             HPS_UART_TX,

      input              HPS_USB_CLKOUT,

      inout       [7:0]  HPS_USB_DATA,

      input              HPS_USB_DIR,

      input              HPS_USB_NXT,

      output             HPS_USB_STP,

`endif /*ENABLE_HPS*/

 

      / IRDA /

      input              IRDA_RXD,

      output             IRDA_TXD,

 

      / KEY /

      input       [3:0]  KEY,

 

      / LEDR /

      output      [9:0]  LEDR,

 

      / PS2 /

      inout              PS2_CLK,

      inout              PS2_CLK2,

      inout              PS2_DAT,

      inout              PS2_DAT2,

 

      / SW /

      input       [9:0]  SW,

 

      / TD /

      input              TD_CLK27,

      input      [7:0]  TD_DATA,

      input             TD_HS,

      output             TD_RESET_N,

      input             TD_VS,

 

      / VGA /

      output      [7:0]  VGA_B,

      output             VGA_BLANK_N,

      output             VGA_CLK,

      output      [7:0]  VGA_G,

      output             VGA_HS,

      output      [7:0]  VGA_R,

      output             VGA_SYNC_N,

      output             VGA_VS

);

//=======================================================

//  tdc/WIRE declarations

//=======================================================

 

wire  [31:0] din;

wire         wr_full;

wire         rd_empt;

wire         rd_rqt;

wire  rd_clk;

wire  [9:0] ris_c,fal_c;

wire wr_rqt;

//=======================================================

//  REG/WIRE declarations

//=======================================================

wire                                                                 HEX0P;

wire                                                                 HEX1P;

wire                                                                 HEX2P;

wire                                                                 HEX3P;

wire                                                                 HEX4P;

wire                                                                 HEX5P;



 

//=======================================================

//  Structural coding

//=======================================================

wire reset_n;

 

assign reset_n = 1'b1;

//=======================================================

//  delay_inst

//=======================================================

top_sch delay_inst(

        .clock(DRAM_CLK),

        .st2(sin),

        .wr(wr_rqt),

        .ris_c(ris_c),

        .fal_c(fal_c)

);

sysfifo fifo_inst(

        .data({{12{1'b0}},ris_c,fal_c}),

        .rdclk(rd_clk),

        .rdreq(rd_rqt),

        .wrclk(DRAM_CLK),

        .wrreq(wr_rqt),

        .q(din),

        .rdempty(rd_empt),

        .wrfull(wr_full));

audio_nios u0(

 

                .clk_clk                                (CLOCK_50),                            //                         clk.clk

                .reset_reset_n                          (reset_n),                      //                       reset.reset_n

                .pll_sdam_clk                           (DRAM_CLK),                       //                    pll_sdam.clk

                .pll_outclk3_clk                        (rd_clk),

                .key_external_connection_export         (KEY),     //     key_external_connection.export

                .seg7_conduit_end_export                ({

                                              HEX5P, HEX5, HEX4P, HEX4,

                                              HEX3P, HEX3, HEX2P, HEX2,

                                              HEX1P, HEX1, HEX0P, HEX0}),            //            seg7_conduit_end.export

                .pio_0_external_connection_export       (LEDR),   //   pio_0_external_connection.export

                .sw_external_connection_export          (SW),      //      sw_external_connection.export

                .din32_external_connection_export   (din),   //   din32_external_connection.export

      .wr_full_external_connection_export (wr_full), // wr_full_external_connection.export

      .rd_rqt_external_connection_export  (rd_rqt),  //  rd_rqt_external_connection.export

      .rd_empt_external_connection_export (rd_empt),  // rd_empt_external_connection.export

 

                .sdram_wire_addr                        (DRAM_ADDR),                    //                  sdram_wire.addr

                .sdram_wire_ba                          (DRAM_BA),                      //                            .ba

                .sdram_wire_cas_n                       (DRAM_CAS_N),                   //                            .cas_n

                .sdram_wire_cke                         (DRAM_CKE),                     //                            .cke

                .sdram_wire_cs_n                        (DRAM_CS_N),                    //                            .cs_n

                .sdram_wire_dq                          (DRAM_DQ),                      //                            .dq

                .sdram_wire_dqm                         ({DRAM_UDQM,DRAM_LDQM}),                     //                            .dqm

                .sdram_wire_ras_n                       (DRAM_RAS_N),                   //                            .ras_n

                .sdram_wire_we_n                        (DRAM_WE_N)                    //                            .we_n

 

        );



 

Endmodule

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值