📄 pcrm.v
字号:
/******************************************************
功能说明:
包含3个子模块,PcrReg模块,div模块,PCTCtl模块
*******************************************************/
`include "PCRCtl.v"
`include "PcrReg.v"
`include "div.v"
module PCRM( CLKM, ResetN,
//input
CLK90K, SetData, SPCR0, SPCR1, SPCR2, SetFNum, RdEnd,
TxFsync, Send_0Frame, Pause,
//output
SetPCREn, ProgTxEn, TF2_EN, PCR_ERR,
//debug
NxtPCRn,PCRnV, SetTsys, TF2, TF2_ERR, test
);
input CLKM; \\系统主时钟,信号来源FPGA的P77脚
input ResetN; \\系统复位信号,FPGA的P49&(!K)
input CLK90K; \\90kHz时钟信号,来自CLKMOD.CLK90K
input [15:0] SetData; \\PCRM模块内的寄存器的输入数据总线,来自CSM.SETDATA[15:0]
input SPCR0; \\设置PCR第32~17位指示,来自CSM.SPCR0
input SPCR1; \\设置PCR第16~1位指示,来自CSM.SPCR1
input SPCR2; \\设置PCR第0位指示,来自CSM.SPCR2
input SetFNum; \\设置帧个数寄存器指示,来自CSM.FNum
input RdEnd; \\读PCR结束信号,来自CSM.RdEnd
input TxFsync; \\发送帧同步信号,来自CSM.TxFsync
input Send_0Frame; \\发送第0帧指示,来自CSM.Send_0Frame
input Pause; \\暂停播放信号,来自I2CTOP.Pause
output SetPCREn; \\设置PCR寄存器允许,作为CSM.SetPCREn的输入
output ProgTxEn; \\节目数据发送允许,作为TXMODULE.ProgTxEn输入
output TF2_EN; \\用于指示PCR_ERR信号是否有效,作为CSM.TF2_EN输入
output PCR_ERR; \\PCR错误指示,作为CSM.PCR_ERR输入
//debug
output NxtPCRn;
output PCRnV;
output SetTsys;
output [32:0] TF2;
output TF2_ERR;
output test;
//debug
//内部信号
wire [32:0] TF;
wire TF_En;
wire NxtPCRn;
wire RdEndOut;
wire [32:0] PCRn;
wire [32:0] PCR12;
wire [11:0] FNUM;
wire DivEn;
wire PCRnV;
//debug
assign TF2_ERR = TF2[32] | TF2[31] | TF2[30] | TF2[29] |
TF2[28] | TF2[27] | TF2[26] | TF2[25] |
TF2[24] | TF2[23] | TF2[22] | TF2[21] |
TF2[20] | TF2[19] | TF2[18] | TF2[17] |
TF2[16] | TF2[15] | TF2[14];
//debug
/*********************************************************************
PCRCtl模块功能:描述了PCR的比较过程
*********************************************************************/
PCRCtl U1( .ResetN(ResetN),
.CLKM(CLKM),
.CLK90K(CLK90K),
.PCRn(PCRn),
.NxtPCRn(NxtPCRn),
.Fsync(TxFsync),
.Send_0SEG(Send_0Frame),
.TxEn(ProgTxEn),
.PCRnV(PCRnV),
.RdEnd(RdEndOut),
.Pause(Pause),
.SetTsys(SetTsys),
.test(test)
);
/*******************************************************************
*******************************************************************/
PcrReg U2( .ResetN(ResetN),
.CLKM(CLKM),
.PCRn(PCRn),
.NxtPCRn(NxtPCRn),
.SPCR0(SPCR0),
.SPCR1(SPCR1),
.SPCR2(SPCR2),
.SetFNum(SetFNum),
.IData(SetData),
.SetPCREn(SetPCREn),
.PCR12(PCR12),
.FNUM(FNUM),
.TF(TF),
.DivEn(DivEn),
.TF_En(TF_En),
.PCRnV(PCRnV),
.RdEndIn(RdEnd),
.RdEndOut(RdEndOut),
.TF2_EN(TF2_EN),
.PCR_ERR(PCR_ERR),
//debug
.TF2(TF2)
);
div U3( .ResetN(ResetN),
.CLKM(CLKM),
.dividend(PCR12),
.divisor(FNUM),
.quotient(TF),
.DivEn(DivEn),
.Quo_Valid(TF_En)
);
endmodule
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -