Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- element CPU1() { //sincrono
- #sync scale 1000
- mode sleep: -5; //consumo de unidades de energia por 1k ciclo de clk
- mode active_slow: -50;
- mode active_fast: -100;
- mode disable: 0;
- }
- element TEMP() { //assincrono
- #timescale 1ms
- mode enable: -5; // consumo do SPI + sensor. -5 unidades de energia por tempo
- mode disable: 0;
- }
- element AD_MIC(){ //assincrono
- #timescale 1ms
- mode enable: -2; // consumo conversor AD
- mode disable: 0;
- }
- element MIC(){ //assincrono
- #timescale 1ms
- mode enable: -20; // analogico do MIC, a cada 100ns ativo gasta 20 unidades de energia
- mode disable: -3; // pre-amp do MIC possui um consumo constante. A cada 100ns gasta 3 unidades de energia
- }
- element BATTERY(){ //assíncrono
- #timescale 7s
- mode running: -1; //self discharge 1 unidade de energia a cada 7s
- mode disable: 0;
- }
- element LED() {
- #timescale 100ms
- mode enable: -10;
- mode disable: 0;
- }
- element RADIO(){
- #timescale 1ms
- mode tx: -35;
- mode rx: -10;
- mode disable: 0;
- }
- //define os parametros inicias do modelo
- startup {
- #timescale 1us //quando nao definido, 1 us é o padrão
- $ENERGY = 50000;
- ON_AMOST = 0;
- MIC.disable();
- CPU1.disable();
- AD_MIC.disable();
- TEMP.disable();
- RADIO.rx();
- }
- task INIT_ENERGY ( TRUE ) { //sinal de ativacao permanente
- 0: BATTERY.running();
- }
- task AMOST_MIC ( TMR(25us) || ON_AMOST_MIC ) {
- 0: ON_AMOST_MIC = 1;
- 0: AD_MIC.enable()
- 0: MIC.enable()
- 0: CPU1.active_fast();
- $48: ON_AMOST_MIC=0;
- $48: MIC.disable()
- $48: AD_MIC.disable(); //os perifericos permanecerama ativos pelos 48 ciclos;
- $48: CPU1.disable();
- }
- task AMOST_TEMP ( TMR(5s) || ON_AMOST_TEMP ) {
- #timescale 1ms;
- 0: ON_AMOST_TEMP = 1;
- 0: TEMP.enable() //esse sensor so fica pronto depois de 50ms
- 50: CPU1.active_slow(); //computacao realizada em 10 ciclos lentos
- $10: ON_AMOST_TEMP=0;
- $10: CPU1.disable();
- }
- task AUDIO_ANALISYS ( TMR(100ms) || ON_AUDIO_AN ) {
- #timescale 1ms;
- 0: ON_AUDIO_AN = 1;
- 0: TEMP.enable(); //esse sensor so fica pronto depois de 50ms
- 0: CPU1.active_fast(); //computacao fft realizada em 2400 ciclos
- $2400,99.9% { //no ciclo 2400, 99,9% das vezes faz isso
- CPU1.disable();
- ON_AUDIO_AN = 0;
- }
- $2400,0.1%: CPU1.active_slow();
- $2404: LED_ENABLE = 1;
- $2408: SIG_TX_DATA = 1;
- $2408: ON_AUDIO_AN = 0;
- }
- task LED( LED_ENABLE ) {
- #timescale 1s
- 0:LED.enable();
- 5:LED.disable();
- 5:LED_ENABLE = 0;
- }
- task TX_DATA( SIG_TX_DATA) {
- #timescale 1ms
- 0: RADIO.tx();
- 0: CPU1.active_fast();
- $28: CPU1.disable();
- $28 + 2000 + RANDOM(0,5000) { //radio fica ativo de 28 ciclos+ 2 a 7 segundos
- RADIO.disable();
- SIG_TX_DATA = 0;
- }
- }
- task RX_DATA( INTERRUPT(RX) ) {
- 0: CPU1.active_slow();
- $30,99.99%: { //30 ciclos para testar os dados
- CPU1.disable();
- INTERRUPT(RX) = 0;
- }
- $330: CPU1.disable();
- $330: INTERRUPT(RX) = 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement