📄 nco.tdf
字号:
TITLE "NCO";
-- Version 1.0,
-- Copyright Rune Baeverrud, August 19, 1997
-- You may use or distribute this function freely,
-- provided you do not remove this copyright notice.
-- If you have questions or comments, feel free to
-- contact me by email at r@acte.no
-- World Wide WEB: http://193.215.128.3/freecore
INCLUDE "sine";
INCLUDE "lpm_add_sub";
PARAMETERS
(
POLARITY = "BIPOLAR"
);
SUBDESIGN NCO
(
SysClk : INPUT;
Frequency[19..0] : INPUT = GND;
Offset[8..0] : INPUT = GND;
Start : INPUT = VCC;
Stop : INPUT = GND;
Wave[7..0] : OUTPUT;
Running : OUTPUT;
ZeroCross : OUTPUT;
)
VARIABLE
phasereg[24..0]: DFF;
pol_d1, pol_d2 : DFF;
Run, Active : SRFF;
RWave_2d[7..0] : DFFE;
RWave_1d[7..0] : DFF;
ZC : NODE;
NWave[7..0] : NODE;
NPhase[8..0] : NODE;
BEGIN
phasereg[].clk = SysClk;
pol_d1.clk = SysClk;
pol_d2.clk = SysClk;
Run.clk = SysClk;
Active.clk = SysClk;
RWave_1d[].clk = SysClk;
RWave_2d[].clk = SysClk;
(NPhase[],,) = LPM_ADD_SUB (, phasereg[24..16], Offset[],,,)
WITH (LPM_WIDTH=9, LPM_DIRECTION="ADD", LPM_REPRESENTATION="UNSIGNED",
LPM_PIPELINE=0, ONE_INPUT_IS_CONSTANT="NO");
NWave[] = sine (SysClk, NPhase[])
WITH ( POLARITY = POLARITY,
LEVEL1 = "REGISTERED",
LEVEL2 = "REGISTERED",
LEVEL3 = "REGISTERED");
RWave_1d[] = NWave[];
RWave_2d[] = RWave_1d[];
Wave[] = RWave_2d[];
(phasereg[],,) = LPM_ADD_SUB (, phasereg[], (0,0,0,0,0,Frequency[]),,,)
WITH (LPM_WIDTH=25, LPM_DIRECTION="ADD", LPM_REPRESENTATION="UNSIGNED",
LPM_PIPELINE=0, ONE_INPUT_IS_CONSTANT="NO");
pol_d1 = NWave[7];
pol_d2 = pol_d1;
ZC = pol_d1 != pol_d2;
Run.S = Start;
Run.R = Stop;
Active.S = Run AND ZC;
Active.R = (NOT Run) AND ZC;
RWave_2d[].ena = Active OR (Run AND ZC);
Running = Active;
ZeroCross = ZC;
END;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -