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

📄 csm1.v

📁 华大机顶盒源码(包括所有源代码).rar
💻 V
📖 第 1 页 / 共 2 页
字号:
	    sd_wa <= 0;
	    sd_ra <= 0;
	    pcr_rda <= 0;
	    sd_rd_en <= 0;
	    rdpcr_en <= 0;
	    BlkIndex <= 0;
	    BlkData <= 0;
	    BlkValid <= 0;
	    BlkStb <= 0;
	    TSEG <= 0;
	    ReadSEG <= 0;
	    LPEND <= 1;
	    pcr_fnum <= 0; 
	    TFRAME <= 0;
	    RCNT <= 0;
	    TCNT <= 0;
	    WR_EN <= 0;
	    RD_EN <= 0;
	    PreSegIndex <= 0;
	    endframe <= 0;
	    ContWR <= 0;
	    RdEnd <= 0;
            endferr <= 0;	    
//            pcrtestbit <= 0;
            pcrerr <= 0;
            end
     WRS0 : begin
            sd_rd_en <= 0;
            rdpcr_en <= 0;
            BlkStb <= 0;
	    SPCR0 <= 0;
            SPCR1 <= 0;
            SPCR2 <= 0;
            SetFNUM <= 0;
            SRAM_WR <= 1'b1;
            SRAM_RD <= 1'b1;
            SRAM_FRESH <= 1'b1;
            if(TCNT==6'd2 && Send_0Frame)
                Send_0Frame <= 0;
                   
            if(PLAYEND) begin
                LPEND <= 0;
            end
            else begin // PLAYEND==0
                if(RxFSYNC) begin
                   if(FValid) begin
                      RCNT <= 0;
                      if(FirstFr) begin
                         if(Search_0SEG) begin
                            if(RSEG==0) begin
                               sd_wa <= 0;
                               BlkIndex <= 0;
                               BlkValid <= 1;
                               BlkData  <= 0;
                               WR_EN <= 1;
                               ContWR <= 1;
                               Search_0SEG <= 0;
                            end
                         end else begin //Search_0SEG==0
                            if(SegWrEn) begin
//                               WaitWA <= 1;
                               sd_wa <= SegWrAddr;
                               BlkIndex <= SegWrIndex;
                               BlkValid <= 1;
                               BlkData <= RSEG;
                               WR_EN <= 1;
                               ContWR <= 1;
                            end else begin //Search_0SEG
                               WR_EN <= 0;
                               ContWR <= 0;
                            end
                         end                                             
                      end else begin
                         if(ContWR)
                            WR_EN <= 1;
                         else
                            WR_EN <= 0;
                         if(WR_EN || ContWR) begin
                            if(RCNT!=0)
                               sd_wa <= sd_wa + FRAME_CNT-RCNT;
                            else
                               sd_wa <= sd_wa + 1;
                         end
                      end
                   end
                   else begin // !FValid 
                      WR_EN <= 0;
                   end
                end
                else begin //FSYNC==0
                   if(WR_EN && RCNT<FRAME_CNT) begin
                      sd_wa <= sd_wa + 1;
                      RCNT <= RCNT + 1;
                   end
                   else if(WR_EN) begin
                      WR_EN <= 0;
                   end                 
                end
            end
            end

      WRS1 : begin
             if(RxFSYNC && FirstFr && WR_EN)
                BlkStb <= 1;
             else
                BlkStb <= 0;
             if(WR_EN)
                SRAM_WR <= 1'b0;
             else
                SRAM_WR <= 1'b1;
             end            
      WRS2 : begin
             BlkStb <= 0;
             SRAM_WR <= SRAM_WR;
             end
      WRS3 : begin
             SRAM_WR <= 1'b1;
             end
      RDS0 : begin
             if(Send_0Frame) begin
                RD_EN <= 1;
                if(BLK0VALID && BLK1VALID && !StartEn )
                   SendIR <= 1;
                else
                   SendIR <= 0;
                if(BLK0VALID && BLK1VALID && StartEn)
                   sd_rd_en <= 1;
                else
                   sd_rd_en <= 0;       
             end
             else begin // Send_0Frame==0
                if(RD_EN) begin
                   if(TFRAME==1 && TCNT==FRAME_CNT) begin
                      TCNT <= 0;
                      if(SegTxEn)begin
                         TSEG <= TSEG+1;
                         sd_ra <= SegTxAddr;
                         sd_rd_en <= 1;
                         BlkIndex <= PreSegIndex;
                         BlkValid <= 0;
                         BlkData <= 0;
                         BlkStb <= 1;
                         PreSegIndex <= SegTxIndex;
                         RD_EN <= 1;  
                      end
                      else begin // SegTxEn==0
                         Wait_SegTxEn <= 1;
                         RD_EN <= 0;
                         if((TSEG+7'd1)>=MAX_SEG)
                            LPEND <= 0;
                      end
                   end
                   else begin // TFRAME!=1 || TCNT!=6'd47
                      sd_rd_en <= 1;
                      if(TCNT==FRAME_CNT)
                         TCNT <= 0;
                   end
                end
             end
             if(!RD_EN && Wait_SegTxEn && SegTxEn) begin
                RD_EN <= 1;
                Wait_SegTxEn <= 0;  
             end   
             end
                        
      RDS1 : begin  
             if(TCNT == 0) 
                TxFSYNC <= 1'b1;
             else
                TxFSYNC <= 1'b0;
             SRAM_RD <= 1'b0;
             end     
      RDS3 : begin  
             SRAM_RD <= 1'b1;
             end     
      RDS4 : begin
             if(SD_BURST_LEN[0]) begin
                if(TCNT == 0) begin
                   if(TSEG != {pcrbuf[20:16],SRAM_DI[15:14]})
                      TFRAME <= 1;
                   else 
                      TFRAME <= SRAM_DI[13];
/**************************************************/                
/*                   TFRAME <= SRAM_DI[13];       */
/**************************************************/                   
                end
                sd_rd_en <= 0;
                TCNT <= TCNT + 1;
                sd_ra <= sd_ra + 1;
             end
             end    
                
      REFRESH1 : begin
                 SRAM_FRESH <= 1'b1;
                 end      
      REFRESH2 : begin
                 SRAM_FRESH <= 1'b0;
                 end      
      REFRESH3 : begin
                 SRAM_FRESH <= 1'b0;
                 end      
      REFRESH4 : begin
                 SRAM_FRESH <= 1'b1;
                 end      
              
      PCRS0 : begin
              if(pcr_st==3'b000) begin
                 pcr_fnum <= 0;
                 pcr_rda <= pcr_rda;
                 if((Send_0Frame && BLK0VALID && BLK1VALID) || SetPCREn) begin
                    pcr_st <= 3'b001;
                 end
              end
              else if(pcr_st==3'b100) begin
                 SPCR1 <= 1;
                 pcr_fnum <= pcr_fnum + 1;
              end
              else if(pcr_st==3'b111) begin
                 if(endframe) begin
                    if(SegRdEn) begin
                       pcr_rda <= SegRdAddr;
                       pcr_st <= 3'b001;
                    end
                    else begin
                       if(ReadSEG==MAX_SEG)
                          RdEnd <= 1;
                       else
                          RdEnd <= 0;
                       pcr_st <= 3'b111; 
                    end
                 end
                 else begin 
                    pcr_st <= 3'b001;
                 end
              end
              else begin
                 rdpcr_en <= 1;
              end  
              end
         PCRS1 : begin
                 if(pcr_st == 3'b011)
                    SPCR0 <= 1;
                 SRAM_RD <= 0;
                 end
         PCRS2 : begin
                 SPCR0 <= 0;
                 SPCR1 <= 0;
                 SPCR2 <= 0;
                 SetFNUM <= 0;
                 end
         PCRS3 : begin
                 SRAM_RD <= 1;
                 end
         PCRS4 : begin
                 rdpcr_en <= 0;
                 case (pcr_st)
                    3'b001 : begin
//                             pcrtestbit <= pcrbuf[7];
                             if(pcrbuf[20:14]!=ReadSEG) begin
//                                if(ReadSEG==TSEG) begin
                                   ReadSEG <= ReadSEG + 1;
                                   pcr_st <= 3'b111;
                                   pcr_rda <= pcr_rda + FRAME_CNT;
                                   pcr_fnum <= pcr_fnum+1; 
//                                end
//                                else begin
//                                   ReadSEG <= ReadSEG;
//                                   pcr_st <= 3'b001;
//                                   pcr_rda <= pcr_rda;
//                                   pcr_fnum <= pcr_fnum;
//                                end                                    
                                endframe <= 1; 
                                endferr <= 1;
                             end
                             else begin
                                endferr <= 0;
                                if(pcrbuf[13]==1) begin
//                                    if(ReadSEG==TSEG)
                                       ReadSEG <= ReadSEG + 1;
//                                    else
//                                       ReadSEG <= ReadSEG;
                                    endframe <= 1;
                                end
                                else
                                    endframe <= 0;
//                                if((pcrbuf[13]==1) && (ReadSEG!=TSEG)) begin
//                                    pcr_st <= 3'b001;
//                                    pcr_rda <= pcr_rda;
//                                    pcr_fnum <= pcr_fnum;
//                                end
//                                else 
                                if(pcrbuf[5]==1'b1) begin
                                    pcr_st <= 3'b010;
                                    pcr_rda <= pcr_rda + 1;
                                end
                                else begin 
                                    pcr_st <= 3'b111;
                                    pcr_rda <= pcr_rda + FRAME_CNT;
                                    pcr_fnum <= pcr_fnum + 1;
                                end
                             end
  /*------------------------------------------------------
                             if(pcrbuf[13]==1) begin
                                if(ReadSEG==TSEG)
                                   ReadSEG <= ReadSEG + 1;
                                else
                                   ReadSEG <= ReadSEG;
                                endframe <= 1;
                             end
                             else
                                endframe <= 0;
                             if((pcrbuf[13]==1) && (ReadSEG!=TSEG)) begin
                                 pcr_st <= 3'b001;
                                 pcr_rda <= pcr_rda;
                                 pcr_fnum <= pcr_fnum;
                             end
                             else if(pcrbuf[5]==1'b1) begin
                                pcr_st <= 3'b010;
                                pcr_rda <= pcr_rda + 1;
                             end
                             else begin 
                                pcr_st <= 3'b111;
                                pcr_rda <= pcr_rda + FRAME_CNT;
                                pcr_fnum <= pcr_fnum + 1;
                             end
  ----------------------------------------------------*/
                             end
                    3'b010 : begin
//                             pcrtestbit <= pcrtestbit ^ pcrbuf[15] ^ pcrbuf[14] ^ pcrbuf[13] ^ pcrbuf[12] ^
//                                           pcrbuf[11] ^ pcrbuf[10] ^ pcrbuf[9]  ^ pcrbuf[8]  ^ pcrbuf[7]  ^
//                                           pcrbuf[6]  ^ pcrbuf[5]  ^ pcrbuf[4]  ^ pcrbuf[3]  ^ pcrbuf[2]  ^
//                                           pcrbuf[1]  ^ pcrbuf[0];
                             pcrerr <= pcrbuf[15] | pcrbuf[14] | pcrbuf[13] | pcrbuf[12];                                        
                             if(pcrbuf[20]==1'b1) begin
                                pcr_st <= 3'b011;
                                SetData <= pcrbuf[15:0];
                                pcr_rda <= pcr_rda + 1;
                             end
                             else begin
                                pcr_st <= 3'b111;
                                pcr_rda <= pcr_rda + FRAME_CNT-1;
                                pcr_fnum <= pcr_fnum + 1;
                             end
                             end 
                    3'b011 : begin
//                             pcrtestbit <= pcrtestbit ^ pcrbuf[31] ^ pcrbuf[30] ^ pcrbuf[29] ^ pcrbuf[28] ^
//                                           pcrbuf[27] ^ pcrbuf[26] ^ pcrbuf[25] ^ pcrbuf[24];
                             SetData <= pcrbuf[31:16];
                             pcr_st <= 3'b100;
                             end
                    default : begin
                              pcr_st <= pcr_st;
                              end
                 endcase    
                 end
        PCRS5 : begin
                SPCR1 <= 0;
                SetData <= pcrbuf[15:0];
                end
        PCRS6 : begin
                SPCR2 <= 1;
                end
        PCRS7 : begin
                SPCR2 <= 0;        
                SetData <= pcr_fnum;
                end
        PCRS8 : begin
                if(/*!pcrtestbit &&*/ !pcrerr) begin
                   SetFNUM <= 1;
                   pcr_fnum <= pcr_fnum;
                   pcr_st <= 0;
                end else begin
                   SetFNUM <= 0;
                   pcr_st <= 3'b111;
                   pcr_fnum <= pcr_fnum + 1;
                end
                if(endframe) begin
                   if(SegRdEn)
                      pcr_rda <= SegRdAddr;
                end
                else
                   pcr_rda <= pcr_rda+FRAME_CNT-2;
                end
      WAIT_DEN : begin
                 SendIR <= 0;
                 sd_rd_en <= 0;
                 rdpcr_en <= 0;
                 BlkStb <= 0;
	         SPCR0 <= 0;
    	         SPCR1 <= 0;
                 SPCR2 <= 0;
                 SetFNUM <= 0;
                 SRAM_WR <= 1'b1;
                 SRAM_RD <= 1'b1;
                 SRAM_FRESH <= 1'b1;
                 if(TCNT==6'd2 && Send_0Frame)
                    Send_0Frame <= 0;
//                 if(WaitWA && SegWAEn) begin
//                    sd_wa <= SegWrAddr + 1;
//                    WaitWA <= 0;
//                 end
                 end
      SENDPEND0 : begin
                  SendIR <= 1;
                  LPEND <= 0;
                  end
      SENDPEND1 : begin
                  SendIR <= 0;
                  LPEND <= 0;
                  end
      SENDPEND2 : begin
                  LPEND <= 1;
                  end 
   endcase
end                     
      
             
      
endmodule

⌨️ 快捷键说明

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