⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 altera_mf.v

📁 FIFO(先进先出队列)通常用于数据的缓存和用于容纳异步信号的频率或相位的差异。本FIFO的实现是利用 双口RAM 和读写地址产生模块来实现的.FIFO的接口信号包括异步的写时钟(wr_clk)和读
💻 V
📖 第 1 页 / 共 5 页
字号:


   assign addsub_wire_en =  (addnsub_reg == "UNREGISTERED")? 1:
                              (addnsub_reg == "CLOCK0")? ena0:
                              (addnsub_reg == "CLOCK1")? ena1:
                              (addnsub_reg == "CLOCK2")? ena2:
                              (addnsub_reg == "CLOCK3")? ena3:1;


   assign addsub_pipe_wire_en =  (addnsub_pipeline_reg == "UNREGISTERED")? 1:
                                   (addnsub_pipeline_reg == "CLOCK0")? ena0:
                                   (addnsub_pipeline_reg == "CLOCK1")? ena1:
                                   (addnsub_pipeline_reg == "CLOCK2")? ena2:
                                   (addnsub_pipeline_reg == "CLOCK3")? ena3:1;


   assign zero_wire_en =  (accum_sload_reg == "UNREGISTERED")? 1:
                           (accum_sload_reg == "CLOCK0")? ena0:
                           (accum_sload_reg == "CLOCK1")? ena1:
                           (accum_sload_reg == "CLOCK2")? ena2:
                           (accum_sload_reg == "CLOCK3")? ena3:1;

   assign accum_sload_upper_data_wire_en =  (accum_sload_upper_data_reg == "UNREGISTERED")? 1:
                           (accum_sload_upper_data_reg == "CLOCK0")? ena0:
                           (accum_sload_upper_data_reg == "CLOCK1")? ena1:
                           (accum_sload_upper_data_reg == "CLOCK2")? ena2:
                           (accum_sload_upper_data_reg == "CLOCK3")? ena3:1;

   assign zero_pipe_wire_en =  (accum_sload_pipeline_reg == "UNREGISTERED")? 1:
                                (accum_sload_pipeline_reg == "CLOCK0")? ena0:
                                (accum_sload_pipeline_reg == "CLOCK1")? ena1:
                                (accum_sload_pipeline_reg == "CLOCK2")? ena2:
                                (accum_sload_pipeline_reg == "CLOCK3")? ena3:1;

   assign accum_sload_upper_data_pipe_wire_en =  (accum_sload_upper_data_pipeline_reg == "UNREGISTERED")? 1:
                                (accum_sload_upper_data_pipeline_reg == "CLOCK0")? ena0:
                                (accum_sload_upper_data_pipeline_reg == "CLOCK1")? ena1:
                                (accum_sload_upper_data_pipeline_reg == "CLOCK2")? ena2:
                                (accum_sload_upper_data_pipeline_reg == "CLOCK3")? ena3:1;

   assign sign_a_wire_en = (sign_reg_a == "UNREGISTERED")? 1:
                            (sign_reg_a == "CLOCK0")? ena0:
                            (sign_reg_a == "CLOCK1")? ena1:
                            (sign_reg_a == "CLOCK2")? ena2:
                            (sign_reg_a == "CLOCK3")? ena3:1;


   assign sign_b_wire_en = (sign_reg_b == "UNREGISTERED")? 1:
                            (sign_reg_b == "CLOCK0")? ena0:
                            (sign_reg_b == "CLOCK1")? ena1:
                            (sign_reg_b == "CLOCK2")? ena2:
                            (sign_reg_b == "CLOCK3")? ena3:1;



   assign sign_pipe_a_wire_en = (sign_pipeline_reg_a == "UNREGISTERED")? 1:
                            (sign_pipeline_reg_a == "CLOCK0")? ena0:
                            (sign_pipeline_reg_a == "CLOCK1")? ena1:
                            (sign_pipeline_reg_a == "CLOCK2")? ena2:
                            (sign_pipeline_reg_a == "CLOCK3")? ena3:1;


   assign sign_pipe_b_wire_en = (sign_pipeline_reg_b == "UNREGISTERED")? 1:
                            (sign_pipeline_reg_b == "CLOCK0")? ena0:
                            (sign_pipeline_reg_b == "CLOCK1")? ena1:
                            (sign_pipeline_reg_b == "CLOCK2")? ena2:
                            (sign_pipeline_reg_b == "CLOCK3")? ena3:1;


   assign multiplier_wire_en = (multiplier_reg == "UNREGISTERED")? 1:
                             (multiplier_reg == "CLOCK0")? ena0:
                             (multiplier_reg == "CLOCK1")? ena1:
                             (multiplier_reg == "CLOCK2")? ena2:
                             (multiplier_reg == "CLOCK3")? ena3:1;

   assign output_wire_en = (output_reg == "UNREGISTERED")? 1:
                            (output_reg == "CLOCK0")? ena0:
                            (output_reg == "CLOCK1")? ena1:
                            (output_reg == "CLOCK2")? ena2:
                            (output_reg == "CLOCK3")? ena3:1;


   assign mult_pipe_wire_en  = (multiplier_reg == "UNREGISTERED")? ena0:
                                multiplier_wire_en;


   assign mult_round_wire_en = (mult_round_reg == "UNREGISTERED")? 1:
                            (mult_round_reg == "CLOCK0")? ena0:
                            (mult_round_reg == "CLOCK1")? ena1:
                            (mult_round_reg == "CLOCK2")? ena2:
                            (mult_round_reg == "CLOCK3")? ena3:1;


   assign mult_saturation_wire_en = (mult_saturation_reg == "UNREGISTERED")? 1:
                            (mult_saturation_reg == "CLOCK0")? ena0:
                            (mult_saturation_reg == "CLOCK1")? ena1:
                            (mult_saturation_reg == "CLOCK2")? ena2:
                            (mult_saturation_reg == "CLOCK3")? ena3:1;

   assign accum_round_wire_en = (accum_round_reg == "UNREGISTERED")? 1:
                            (accum_round_reg == "CLOCK0")? ena0:
                            (accum_round_reg == "CLOCK1")? ena1:
                            (accum_round_reg == "CLOCK2")? ena2:
                            (accum_round_reg == "CLOCK3")? ena3:1;
                            
   assign accum_round_pipe_wire_en = (accum_round_pipeline_reg == "UNREGISTERED")? 1:
                            (accum_round_pipeline_reg == "CLOCK0")? ena0:
                            (accum_round_pipeline_reg == "CLOCK1")? ena1:
                            (accum_round_pipeline_reg == "CLOCK2")? ena2:
                            (accum_round_pipeline_reg == "CLOCK3")? ena3:1;

   assign accum_saturation_wire_en = (accum_saturation_reg == "UNREGISTERED")? 1:
                            (accum_saturation_reg == "CLOCK0")? ena0:
                            (accum_saturation_reg == "CLOCK1")? ena1:
                            (accum_saturation_reg == "CLOCK2")? ena2:
                            (accum_saturation_reg == "CLOCK3")? ena3:1;
                            
   assign accum_saturation_pipe_wire_en = (accum_saturation_pipeline_reg == "UNREGISTERED")? 1:
                            (accum_saturation_pipeline_reg == "CLOCK0")? ena0:
                            (accum_saturation_pipeline_reg == "CLOCK1")? ena1:
                            (accum_saturation_pipeline_reg == "CLOCK2")? ena2:
                            (accum_saturation_pipeline_reg == "CLOCK3")? ena3:1;
                            
    // ---------------------------------------------------------
    // This block updates the internal clear signals accordingly
    // every time the global clear signal changes state
    // ---------------------------------------------------------

   assign input_a_wire_clr = (input_aclr_a == "UNREGISTERED")? 0:
                             (input_aclr_a == "ACLR0")? aclr0:
                             (input_aclr_a == "ACLR1")? aclr1:
                             (input_aclr_a == "ACLR2")? aclr2:
                             (input_aclr_a == "ACLR3")? aclr3:0;

   assign input_b_wire_clr = (input_aclr_b == "UNREGISTERED")? 0:
                             (input_aclr_b == "ACLR0")? aclr0:
                             (input_aclr_b == "ACLR1")? aclr1:
                             (input_aclr_b == "ACLR2")? aclr2:
                             (input_aclr_b == "ACLR3")? aclr3:0;


   assign addsub_wire_clr =  (addnsub_aclr == "UNREGISTERED")? 0:
                              (addnsub_aclr == "ACLR0")? aclr0:
                              (addnsub_aclr == "ACLR1")? aclr1:
                              (addnsub_aclr == "ACLR2")? aclr2:
                              (addnsub_aclr == "ACLR3")? aclr3:0;


   assign addsub_pipe_wire_clr =  (addnsub_pipeline_aclr == "UNREGISTERED")? 0:
                                   (addnsub_pipeline_aclr == "ACLR0")? aclr0:
                                   (addnsub_pipeline_aclr == "ACLR1")? aclr1:
                                   (addnsub_pipeline_aclr == "ACLR2")? aclr2:
                                   (addnsub_pipeline_aclr == "ACLR3")? aclr3:0;


   assign zero_wire_clr =  (accum_sload_aclr == "UNREGISTERED")? 0:
                           (accum_sload_aclr == "ACLR0")? aclr0:
                           (accum_sload_aclr == "ACLR1")? aclr1:
                           (accum_sload_aclr == "ACLR2")? aclr2:
                           (accum_sload_aclr == "ACLR3")? aclr3:0;

   assign accum_sload_upper_data_wire_clr =  (accum_sload_upper_data_aclr == "UNREGISTERED")? 0:
                           (accum_sload_upper_data_aclr == "ACLR0")? aclr0:
                           (accum_sload_upper_data_aclr == "ACLR1")? aclr1:
                           (accum_sload_upper_data_aclr == "ACLR2")? aclr2:
                           (accum_sload_upper_data_aclr == "ACLR3")? aclr3:0;

   assign zero_pipe_wire_clr =  (accum_sload_pipeline_aclr == "UNREGISTERED")? 0:
                                (accum_sload_pipeline_aclr == "ACLR0")? aclr0:
                                (accum_sload_pipeline_aclr == "ACLR1")? aclr1:
                                (accum_sload_pipeline_aclr == "ACLR2")? aclr2:
                                (accum_sload_pipeline_aclr == "ACLR3")? aclr3:0;

   assign accum_sload_upper_data_pipe_wire_clr =  (accum_sload_upper_data_pipeline_aclr == "UNREGISTERED")? 0:
                                (accum_sload_upper_data_pipeline_aclr == "ACLR0")? aclr0:
                                (accum_sload_upper_data_pipeline_aclr == "ACLR1")? aclr1:
                                (accum_sload_upper_data_pipeline_aclr == "ACLR2")? aclr2:
                                (accum_sload_upper_data_pipeline_aclr == "ACLR3")? aclr3:0;

   assign sign_a_wire_clr = (sign_aclr_a == "UNREGISTERED")? 0:
                            (sign_aclr_a == "ACLR0")? aclr0:
                            (sign_aclr_a == "ACLR1")? aclr1:
                            (sign_aclr_a == "ACLR2")? aclr2:
                            (sign_aclr_a == "ACLR3")? aclr3:0;


   assign sign_b_wire_clr = (sign_aclr_b == "UNREGISTERED")? 0:
                            (sign_aclr_b == "ACLR0")? aclr0:
                            (sign_aclr_b == "ACLR1")? aclr1:
                            (sign_aclr_b == "ACLR2")? aclr2:
                            (sign_aclr_b == "ACLR3")? aclr3:0;




   assign input_a_wire_clr = (input_aclr_a == "UNREGISTERED")? 0:
                             (input_aclr_a == "ACLR0")? aclr0:
                             (input_aclr_a == "ACLR1")? aclr1:
                             (input_aclr_a == "ACLR2")? aclr2:
                             (input_aclr_a == "ACLR3")? aclr3:0;

   assign input_b_wire_clr = (input_aclr_b == "UNREGISTERED")? 0:
                             (input_aclr_b == "ACLR0")? aclr0:
                             (input_aclr_b == "ACLR1")? aclr1:
                             (input_aclr_b == "ACLR2")? aclr2:
                             (input_aclr_b == "ACLR3")? aclr3:0;


   assign addsub_wire_clr =  (addnsub_aclr == "UNREGISTERED")? 0:
                              (addnsub_aclr == "ACLR0")? aclr0:
                              (addnsub_aclr == "ACLR1")? aclr1:
                              (addnsub_aclr == "ACLR2")? aclr2:
                              (addnsub_aclr == "ACLR3")? aclr3:0;


   assign addsub_pipe_wire_clr =  (addnsub_pipeline_aclr == "UNREGISTERED")? 0:
                                   (addnsub_pipeline_aclr == "ACLR0")? aclr0:
                                   (addnsub_pipeline_aclr == "ACLR1")? aclr1:
                                   (addnsub_pipeline_aclr == "ACLR2")? aclr2:
                                   (addnsub_pipeline_aclr == "ACLR3")? aclr3:0;


   assign zero_wire_clr =  (accum_sload_aclr == "UNREGISTERED")? 0:
                           (accum_sload_aclr == "ACLR0")? aclr0:
                           (accum_sload_aclr == "ACLR1")? aclr1:
                           (accum_sload_aclr == "ACLR2")? aclr2:
                           (accum_sload_aclr == "ACLR3")? aclr3:0;


   assign zero_pipe_wire_clr =  (accum_sload_pipeline_aclr == "UNREGISTERED")? 0:
                                (accum_sload_pipeline_aclr == "ACLR0")? aclr0:
                                (accum_sload_pipeline_aclr == "ACLR1")? aclr1:
                                (accum_sload_pipeline_aclr == "ACLR2")? aclr2:
                                (accum_sload_pipeline_aclr == "ACLR3")? aclr3:0;



   assign sign_a_wire_clr = (sign_aclr_a == "UNREGISTERED")? 0:
                            (sign_aclr_a == "ACLR0")? aclr0:
                            (sign_aclr_a == "ACLR1")? aclr1:
                            (sign_aclr_a == "ACLR2")? aclr2:
                            (sign_aclr_a == "ACLR3")? aclr3:0;


   assign sign_b_wire_clr = (sign_aclr_b == "UNREGISTERED")? 0:
                            (sign_aclr_b == "ACLR0")? aclr0:
                            (sign_aclr_b == "ACLR1")? aclr1:
                            (sign_aclr_b == "ACLR2")? aclr2:
                            (sign_aclr_b == "ACLR3")? aclr3:0;




   assign sign_pipe_a_wire_clr = (sign_pipeline_aclr_a == "UNREGISTERED")? 0:
                            (sign_pipeline_aclr_a == "ACLR0")? aclr0:
                            (sign_pipeline_aclr_a == "ACLR1")? aclr1:
                            (sign_pipeline_aclr_a == "ACLR2")? aclr2:
                            (sign_pipeline_aclr_a == "ACLR3")? aclr3:0;


   assign sign_pipe_b_wire_clr = (sign_pipeline_aclr_b == "UNREGISTERED")? 0:
                            (sign_pipeline_aclr_b == "ACLR0")? aclr0:
                            (sign_pipeline_aclr_b == "ACLR1")? aclr1:
                            (sign_pipeline_aclr_b == "ACLR2")? aclr2:
                            (sign_pipeline_aclr_b == "ACLR3")? aclr3:0;


   assign multiplier_wire_clr = (multiplier_aclr == "UNREGISTERED")? 0:
                             (multiplier_aclr == "ACLR0")? aclr0:
                             (multiplier_aclr == "ACLR1")? aclr1:
                             (multiplier_aclr == "ACLR2")? aclr2:
                             (multiplier_aclr == "ACLR3")? aclr3:0;

   assign output_wire_clr = (output_aclr == "UNREGISTERED")? 0:
                            (output_aclr == "ACLR0")? aclr0:
                            (output_aclr == "ACLR1")? aclr1:
                            (output_aclr == "ACLR2")? aclr2:
                            (output_aclr == "ACLR3")? aclr3:0;

                            
   assign mult_pipe_wire_clr  = (multiplier_reg == "UNREGISTERED")? aclr0:
                            multiplier_wire_clr;

   assign mult_round_wire_clr = (mult_round_aclr == "UNREGISTERED")? 0:
                            (mult_round_aclr == "ACLR0")? aclr0:
                            (mult_round_aclr == "ACLR1")? aclr1:
                            (mult_round_aclr == "ACLR2")? aclr2:
                            (mult_round_aclr == "ACLR3")? aclr3:0;

   assign mult_saturation_wire_clr = (mult_saturation_aclr == "UNREGISTERED")? 0:
                            (mult_saturation_aclr == "ACLR0")? aclr0:
                            (mult_saturation_aclr == "ACLR1")? aclr1:
                            (mult_saturation_aclr == "ACLR2")? aclr2:
                            (mult_saturation_aclr == "ACLR3")? aclr3:0;

   assign accum_round_wire_clr = (accum_round_aclr == "UNREGISTERED")? 0:
                            (accum_round_aclr == "ACLR0")? aclr0:
                            (accum_round_aclr == "ACLR1")? aclr1:
                            (accum_round_aclr == "ACLR2")? aclr2:
                            (accum_round_aclr == "ACLR3")? aclr3:0;
                            
   assign accum_round_pipe_wire_clr = (accum_round_pipeline_aclr == "UNREGISTERED")? 0:
                            (accum_round_pipeline_aclr == "ACLR0")? aclr0:
                            (accum_round_pipeline_aclr == "ACLR1")? aclr1:
                            (accum_round_pipeline_aclr == "ACLR2")? aclr2:
                            (accum_round_pipeline_aclr == "ACLR3")? aclr3:0;

   assign accum_saturation_wire_clr = (accum_saturation_aclr == "UNREGISTERED")? 0:
                            (accum_saturation_aclr == "ACLR0")? aclr0:
                            (accum_saturation_aclr == "ACLR1")? aclr1:
                            (accum_saturation_aclr == "ACLR2")? aclr2:
                            (accum_saturation_aclr == "ACLR3")? aclr3:0;
                            
   assign accum_saturation_pipe_wire_clr = (accum_saturation_pipeline_aclr == "UNREGISTERED")? 0:
                            (accum_saturation_pipeline_aclr == "ACLR0")? aclr0:
                            (accum_saturation_pipeline_aclr == "ACLR1")? aclr1:
                            (accum_saturation_pipeline_aclr == "ACLR2")? aclr2:
                            (accum_saturation_pipeline_aclr == "ACLR3")? aclr3:0;
                            
    // ------------------------------------------------------------------------
    // This block contains 1 register and 1 combinatorial block (to set mult_a)
    // Signal Registered : dataa
    //
    // Register is controlled by posedge input_wire_a_clk
    // Register has an asynchronous clear signal, input_reg_a_wire_clr
    // NOTE : The combinatorial block will be executed if
    //        input_reg_a is unregistered and dataa changes value
    // ------------------------------------------------------------------------
    assign mult_a_wire = (input_reg_a == "UNREGISTERED")? mult_a_tmp : mult_a_reg;
    assign mult_a_tmp = (input_source_a == "DATAA")? dataa :
                            (input_source_a == "SCANA")? scanina :
                            (sourcea == 1)? scanina : dataa;

    always @(posedge input_a_wire_clk or posedge input_a_wire_clr)
    begin
        if (input_a_wire_clr == 1)
            mult_a_reg <= 0;
        else if ((input_a_wire_clk == 1) && (input_a_wire_en == 1))
        begin
            if (input_source_a == "DATAA")
                mult_a_reg <= dataa;
            else if (input_source_a == "SCANA")
                mult_a_reg <= scanina;
            else if  (input_source_a == "VARIABLE")
            begin
                if (sourcea == 1)
                    mult_a_reg <= scanina;
                else
                    mult_a_reg <= dataa;
                end
      

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -