📄 数字系统课程设计.txt
字号:
TITLE '输出1HZ,输入100KHZ'
DECLARATIONS
CLOCK_100KHZ PIN;
CLOCK_1HZ PIN ISTYPE 'REG';
CLOCK_4HZ PIN ISTYPE 'REG';
CLOCK_8HZ PIN ISTYPE 'REG';
[DATA17..DATA0] PIN ISTYPE 'REG';
DATA = [DATA17..DATA0];
c = .C.;
x = .X.;
EQUATIONS
DATA.CLK = CLOCK_100KHZ;
CLOCK_1HZ.CLK = CLOCK_100KHZ;
CLOCK_4HZ.CLK = CLOCK_100KHZ;
CLOCK_8HZ.CLK = CLOCK_100KHZ;
CLOCK_1HZ = 0;
WHEN DATA == 100000-1 THEN{ DATA :=0; CLOCK_1HZ =1;}//正式使用时把2-1改成100000-1
ELSE DATA := DATA +1;
WHEN (DATA == 25000-1) # (DATA == 50000-1) # (DATA == 75000-1) # (DATA == 100000-1)
THEN CLOCK_4HZ :=1;
ELSE CLOCK_4HZ :=0;
WHEN (DATA == 12500-1) # (DATA == 25000-1) # (DATA == 37500-1) # (DATA == 50000-1)
# (DATA == 62500-1) # (DATA == 75000-1) # (DATA == 87500-1) #(DATA == 100000-1)
THEN CLOCK_8HZ :=1;
ELSE CLOCK_8HZ :=0;
TEST_VECTORS([CLOCK_100KHZ]->[CLOCK_1HZ,DATA])
[c]->[x,[x,x,x,x]];
[c]->[x,[x,x,x,x]];
[c]->[x,[x,x,x,x]];
[c]->[x,[x,x,x,x]];
[c]->[x,[x,x,x,x]];
[c]->[x,[x,x,x,x]];
[c]->[x,[x,x,x,x]];
[c]->[x,[x,x,x,x]];
[c]->[x,[x,x,x,x]];
[c]->[x,[x,x,x,x]];
[c]->[x,[x,x,x,x]];
END
//////////////////
MODULE COUNTDEC64
INTERFACE(CLEAR,STOP,CLOCK,[SET5..SET0]->[HOUT3..HOUT0],[LOUT3..LOUT0],FULL);
TITLE '十进制计数器'
DECLARATIONS
COUNT2TO10 INTERFACE([DATA_TWO5..DATA_TWO0]->[DATA_TENH3..DATA_TENH0],[DATA_TENL3..DATA_TENL0]);
COUNT64 INTERFACE(CLEAR,STOP,CLOCK,[SET5..SET0]->[OUT5..OUT0],FULL);
ENTERCOUNT FUNCTIONAL_BLOCK COUNT64;
OUTDATA FUNCTIONAL_BLOCK COUNT2TO10;
CLEAR,STOP,CLOCK,FULL PIN;
[SET5..SET0] PIN;
[HOUT3..HOUT0] PIN;
[LOUT3..LOUT0] PIN;
SET = [SET5..SET0];
HOUT = [HOUT3..HOUT0];
LOUT = [LOUT3..LOUT0];
x = .X.;
c = .C.;
EQUATIONS
ENTERCOUNT.CLEAR = CLEAR;
ENTERCOUNT.STOP = STOP;
ENTERCOUNT.CLOCK = CLOCK;
ENTERCOUNT.[SET5..SET0] = SET;
FULL = ENTERCOUNT.FULL & !STOP;
HOUT = OUTDATA.[DATA_TENH3..DATA_TENH0];
LOUT = OUTDATA.[DATA_TENL3..DATA_TENL0];
OUTDATA.[DATA_TWO5..DATA_TWO0] = ENTERCOUNT.[OUT5..OUT0];
TEST_VECTORS([CLEAR,STOP,CLOCK,SET]->[HOUT,LOUT,FULL])
[1,1,c,[0,0,1,1,1,1]]->[[x,x,x,x],[x,x,x,x],x];
[0,0,c,[0,0,1,1,1,1]]->[[x,x,x,x],[x,x,x,x],x];
[0,0,c,[0,0,1,1,1,1]]->[[x,x,x,x],[x,x,x,x],x];
[0,0,c,[0,0,1,1,1,1]]->[[x,x,x,x],[x,x,x,x],x];
[0,0,c,[0,0,1,1,1,1]]->[[x,x,x,x],[x,x,x,x],x];
[0,0,c,[0,0,1,1,1,1]]->[[x,x,x,x],[x,x,x,x],x];
[0,0,c,[0,0,1,1,1,1]]->[[x,x,x,x],[x,x,x,x],x];
[0,0,c,[0,0,1,1,1,1]]->[[x,x,x,x],[x,x,x,x],x];
[0,0,c,[0,0,1,1,1,1]]->[[x,x,x,x],[x,x,x,x],x];
[0,0,c,[0,0,1,1,1,1]]->[[x,x,x,x],[x,x,x,x],x];
[0,0,c,[0,0,1,1,1,1]]->[[x,x,x,x],[x,x,x,x],x];
[0,0,c,[0,0,1,1,1,1]]->[[x,x,x,x],[x,x,x,x],x];
[0,0,c,[0,0,1,1,1,1]]->[[x,x,x,x],[x,x,x,x],x];
[0,0,c,[0,0,1,1,1,1]]->[[x,x,x,x],[x,x,x,x],x];
[0,0,c,[0,0,1,1,1,1]]->[[x,x,x,x],[x,x,x,x],x];
[0,0,c,[0,0,1,1,1,1]]->[[x,x,x,x],[x,x,x,x],x];
[0,0,c,[0,0,1,1,1,1]]->[[x,x,x,x],[x,x,x,x],x];
[0,0,c,[0,0,1,1,1,1]]->[[x,x,x,x],[x,x,x,x],x];
[0,0,c,[0,0,1,1,1,1]]->[[x,x,x,x],[x,x,x,x],x];
[0,0,c,[0,0,1,1,1,1]]->[[x,x,x,x],[x,x,x,x],x];
[0,0,c,[0,0,1,1,1,1]]->[[x,x,x,x],[x,x,x,x],x];
[0,0,c,[0,0,1,1,1,1]]->[[x,x,x,x],[x,x,x,x],x];
[0,0,c,[0,0,1,1,1,1]]->[[x,x,x,x],[x,x,x,x],x];
[0,0,c,[0,0,1,1,1,1]]->[[x,x,x,x],[x,x,x,x],x];
[0,0,c,[0,0,1,1,1,1]]->[[x,x,x,x],[x,x,x,x],x];
[0,0,c,[0,0,1,1,1,1]]->[[x,x,x,x],[x,x,x,x],x];
[0,0,c,[0,0,1,1,1,1]]->[[x,x,x,x],[x,x,x,x],x];
END
/////////////////////////////
MODULE COUNT2TO10
INTERFACE([DATA_TWO5..DATA_TWO0]->[DATA_TENH3..DATA_TENH0],[DATA_TENL3..DATA_TENL0]);
TITLE '二进制转化为十进制'
//[DATA_TWO5..DATA_TWO0] 输入二进制的数据最大值为64
//[DATA_TENH3..DATA_TENH0] 输出十进制数据的十位
//[DATA_TENL3..DATA_TENL0] 输出十进制数据的个位
DECLARATIONS
[DATA_TWO5..DATA_TWO0] PIN ISTYPE 'COM';
[DATA_TENH3..DATA_TENH0] PIN ISTYPE 'COM';
[DATA_TENL3..DATA_TENL0] PIN ISTYPE 'COM';
TRUTH_TABLE([DATA_TWO5..DATA_TWO0]->[[DATA_TENH3..DATA_TENH0],[DATA_TENL3..DATA_TENL0]])
[0,0,0,0,0,0]->[[0,0,0,0],[0,0,0,0]];//0
[0,0,0,0,0,1]->[[0,0,0,0],[0,0,0,1]];//1
[0,0,0,0,1,0]->[[0,0,0,0],[0,0,1,0]];//2
[0,0,0,0,1,1]->[[0,0,0,0],[0,0,1,1]];//3
[0,0,0,1,0,0]->[[0,0,0,0],[0,1,0,0]];//4
[0,0,0,1,0,1]->[[0,0,0,0],[0,1,0,1]];//5
[0,0,0,1,1,0]->[[0,0,0,0],[0,1,1,0]];//6
[0,0,0,1,1,1]->[[0,0,0,0],[0,1,1,1]];//7
[0,0,1,0,0,0]->[[0,0,0,0],[1,0,0,0]];//8
[0,0,1,0,0,1]->[[0,0,0,0],[1,0,0,1]];//9
[0,0,1,0,1,0]->[[0,0,0,1],[0,0,0,0]];//10
[0,0,1,0,1,1]->[[0,0,0,1],[0,0,0,1]];//11
[0,0,1,1,0,0]->[[0,0,0,1],[0,0,1,0]];//12
[0,0,1,1,0,1]->[[0,0,0,1],[0,0,1,1]];//13
[0,0,1,1,1,0]->[[0,0,0,1],[0,1,0,0]];//14
[0,0,1,1,1,1]->[[0,0,0,1],[0,1,0,1]];//15
[0,1,0,0,0,0]->[[0,0,0,1],[0,1,1,0]];//16
[0,1,0,0,0,1]->[[0,0,0,1],[0,1,1,1]];//17
[0,1,0,0,1,0]->[[0,0,0,1],[1,0,0,0]];//18
[0,1,0,0,1,1]->[[0,0,0,1],[1,0,0,1]];//19
[0,1,0,1,0,0]->[[0,0,1,0],[0,0,0,0]];//20
[0,1,0,1,0,1]->[[0,0,1,0],[0,0,0,1]];//21
[0,1,0,1,1,0]->[[0,0,1,0],[0,0,1,0]];//22
[0,1,0,1,1,1]->[[0,0,1,0],[0,0,1,1]];//23
[0,1,1,0,0,0]->[[0,0,1,0],[0,1,0,0]];//24
[0,1,1,0,0,1]->[[0,0,1,0],[0,1,0,1]];//25
[0,1,1,0,1,0]->[[0,0,1,0],[0,1,1,0]];//26
[0,1,1,0,1,1]->[[0,0,1,0],[0,1,1,1]];//27
[0,1,1,1,0,0]->[[0,0,1,0],[1,0,0,0]];//28
[0,1,1,1,0,1]->[[0,0,1,0],[1,0,0,1]];//29
[0,1,1,1,1,0]->[[0,0,1,1],[0,0,0,0]];//30
[0,1,1,1,1,1]->[[0,0,1,1],[0,0,0,1]];//31
[1,0,0,0,0,0]->[[0,0,1,1],[0,0,1,0]];//32
[1,0,0,0,0,1]->[[0,0,1,1],[0,0,1,1]];//33
[1,0,0,0,1,0]->[[0,0,1,1],[0,1,0,0]];//34
[1,0,0,0,1,1]->[[0,0,1,1],[0,1,0,1]];//35
[1,0,0,1,0,0]->[[0,0,1,1],[0,1,1,0]];//36
[1,0,0,1,0,1]->[[0,0,1,1],[0,1,1,1]];//37
[1,0,0,1,1,0]->[[0,0,1,1],[1,0,0,0]];//38
[1,0,0,1,1,1]->[[0,0,1,1],[1,0,0,1]];//39
[1,0,1,0,0,0]->[[0,1,0,0],[0,0,0,0]];//40
[1,0,1,0,0,1]->[[0,1,0,0],[0,0,0,1]];//41
[1,0,1,0,1,0]->[[0,1,0,0],[0,0,1,0]];//42
[1,0,1,0,1,1]->[[0,1,0,0],[0,0,1,1]];//43
[1,0,1,1,0,0]->[[0,1,0,0],[0,1,0,0]];//44
[1,0,1,1,0,1]->[[0,1,0,0],[0,1,0,1]];//45
[1,0,1,1,1,0]->[[0,1,0,0],[0,1,1,0]];//46
[1,0,1,1,1,1]->[[0,1,0,0],[0,1,1,1]];//47
[1,1,0,0,0,0]->[[0,1,0,0],[1,0,0,0]];//48
[1,1,0,0,0,1]->[[0,1,0,0],[1,0,0,1]];//49
[1,1,0,0,1,0]->[[0,1,0,1],[0,0,0,0]];//50
[1,1,0,0,1,1]->[[0,1,0,1],[0,0,0,1]];//51
[1,1,0,1,0,0]->[[0,1,0,1],[0,0,1,0]];//52
[1,1,0,1,0,1]->[[0,1,0,1],[0,0,1,1]];//53
[1,1,0,1,1,0]->[[0,1,0,1],[0,1,0,0]];//54
[1,1,0,1,1,1]->[[0,1,0,1],[0,1,0,1]];//55
[1,1,1,0,0,0]->[[0,1,0,1],[0,1,1,0]];//56
[1,1,1,0,0,1]->[[0,1,0,1],[0,1,1,1]];//57
[1,1,1,0,1,0]->[[0,1,0,1],[1,0,0,0]];//58
[1,1,1,0,1,1]->[[0,1,0,1],[1,0,0,1]];//59
[1,1,1,1,0,0]->[[0,1,1,0],[0,0,0,0]];//60
[1,1,1,1,0,1]->[[0,1,1,0],[0,0,0,1]];//61
[1,1,1,1,1,0]->[[0,1,1,0],[0,0,1,0]];//62
[1,1,1,1,1,1]->[[0,1,1,0],[0,0,1,1]];//63
END
///////////////////////////////////////
MODULE COUNT64
INTERFACE(CLEAR,STOP,CLOCK,[SET5..SET0]->[OUT5..OUT0],FULL);
TITLE '计数器'
//CLEAR 清零
//STOP 停止计数
//CLOCK 脉冲 1Hz
//[SET3..SET0] 计数器的模,最大模是十六
//[OUT3..OUT0] 输出计数值
//FULL 计数器进位
DECLARATIONS
CLEAR,STOP,CLOCK PIN;
[SET5..SET0] PIN;
[OUT5..OUT0] PIN ISTYPE 'REG_D';
FULL PIN ISTYPE 'REG_D';
SET = [SET5..SET0];
OUT = [OUT5..OUT0];
x = .X.;
c = .C.;
EQUATIONS
FULL.CLK = CLOCK&!STOP;
OUT.CLK = CLOCK&!STOP;
FULL.AR = CLEAR;
OUT.AR = CLEAR;
FULL = 0;
WHEN OUT >= SET-1 THEN { OUT := 0;
FULL := 1;}
ELSE OUT := OUT + 1;
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -