add some docs

This commit is contained in:
Klagarge committed 2023-11-20 21:38:23 +01:00
1 parent 8c4bdd9e41
commit 01d9d71ff5
10 files changed
+402 -5

No files matched your search

+4
View File
@@ -1,5 +1,9 @@
#Demo
$$
E=mc^2
$$
[transmission_process.md](transmission_process.md)
## embedding it directly
```mermaid
+55
View File
@@ -0,0 +1,55 @@
# Intro
## Mode de fonctionnement
A l'initialisation du processeur, le mode "system" est activé
|Processor mode|Notation|Description|
|---|---|---|
|User|\_usr|The normal program execution mode|
|FIQ|\_fiq|Designed to support a high-speed transfer or channel process|
|IRQ|\_irq|Used for general–purpose interrupt handling|
|Supervisor|\_svc|A protected mode for the operating system|
|Abort|\_abt|Used to implement virtual memory and/or memory coprocessor|
|Undefined|\_und|Used to support software emulation of hardware coprocessor|
|System|\_sys|Used to run privileged operating system tasks|
## Les registres du processeur ARM
![[Pièces jointes/Pasted image 20230928150906.png]]
### Rôle des registres
- Les registres `r0` à `r12`sont libre pour un usage général
- Le registre `r13`appelé `SP`(Stack Pointer) sert comme pointeur de pile propre à chaque mode
- Le registre `r14` appelé `LR`(Link Register) mémorise l'adresse de retour lors d'un appel de fonction
- Le registre `r15`appelé `PC`(Program Counter) pointe sur la prochaine instruction à exécuter
- `CPSR`(Current Program Status Register) est le registre d'états courant du processeur
- `SPSR` (Saved Program Status Register) est le registre de sauvegarde de l'ancien registre d'états
### Registres `CPSR`et `SPSR`
Les registres `CPSR`et `SPSR`regroupent:
- Les fanions concernant la plus récente opération réalisée par l'ALU
- Les bits d'acceptation ou de refus d'interruptions électriques
- Le mode du processeur codé sur 5 bits
- Le bit d'activation du jeu d'instructions Thumb
![[Pièces jointes/Pasted image 20231120100133.png]]
## Les fanions
A chaque opération mathématique ou logique, l'ALU peut positionner des fanions
- **N** `Negative` - Nombre négatif. C'est le bit de signe du nombre en complément à 2
- **Z** `Zero` - Nombre = 0. Utilisé généralement avec des compteurs pour effectuer des boucles
- **C** `Carry` - Retenue ou dépassement de capacité lors d'opérations sur des nombres logiques
- **V** `oVerflow` - Dépassement de capacité lors d'opérations arithmétiques en complément à 2
>[!warning]
>Toute les instructions n'affectent pas tous les fanions
## Exécution conditionnelle
Chaque instruction du processeur ARM peut-être exécutée sous condition
- Pour rendre une instruction conditionnelle, il suffit d'ajouter deux lettres à sa mnémonique
- L'opcode de chaque instruction comprend un champ "condition"
![[Pièces jointes/Pasted image 20231120103537.png]]
```armasm
CMP r0, r1 ; Update flags based on r0 - r1
ADDGT r0, r0, #4 ; If r0 greater than r1 THEN r0 = r0 + 4
; ELSE ADDGT is skipped
ADDLT r1, r1, #4 ; IF r0 less than r1 THEN r1 = r1 + 4
; ELSE ADDLT is skipped
```
![[Pièces jointes/Pasted image 20230928151308.png]]
# Instructions de branchement
+162
View File
@@ -0,0 +1,162 @@
# Tailles
- Nibble: 4 bits
- Byte: 8 bits
- Halfword: 16 bits
- Word: 32 bits
- Double Word: 64 bits
# Bases
## Decimal
{digits}
<u>Exemple:</u>
ex: 154
## Hexadecimal
0x_{hex_digits}
&{hex_digits}
<u>Exemple:</u>
0x9A
&9A
## Octal
0{octal_digits}
8_{octal_digits}
<u>Exemple:</u>
0232
8_232
## Binary
2_{binary_digits}
0b{binary_digits}
<u>Exemple:</u>
2_10011010
0b10011010
# Directives
## EQU
- La directive *EQU* assigne une constante numérique au nom symbolique *name*
- La directive *EQU* définit une constante, appelée constante d'assemblage (assembly-time constant)
```armasm
MAX_TEMP EQU 99
BUFFER_SIZE EQU 20*16
MOV r0, #MAX_TEMP ; remplace MOV r0, #99
MOV r1, #BUFFER_SIZE ; remplace MOV r1, #320
```
## GBLx
- La directive *GBLA* déclare une variable globale arithmétique initialisée à 0
- La directive *GBLL* déclare une variable globale logique initialisée à `{FALSE}`
- La directive *GBLS* déclare une variable globale de type chaîne de caractères initialisés comme une chaîne vide ""
## EXPORT & GLOBAL
- La directive *EXPORT* déclare à l'éditeur des liens que le nom symbolique peut-être référencé
- Dans un autre objet
- Dans un autre fichier
- La directive *GLOBAL* est un synonyme
``` armasm
AREA Example, CODE, READONLY
EXPORT DoAdd ; Export the function name
; DoAdd to be used by
; external modules.
DoAdd ADD r0, r0, r1
```
## EXTERN & IMPORT
- La directive *EXTERN* informe l'assembleur que le nom symbolique n'est pas défini dans le fichier courant
- Le nom symbolique *symbole* est traité comme une adresse
- Sa valeur est définie lors de l'opération d'édition des liens
- Avant l'opération d'édition des liens, sa valeur est zéro
``` armasm
AREA Example, CODE, READONLY
EXTERN __C_INITIALIZE ; If C++library linked, gets
; the adress of __C_INITIALIZE
LDR r0, __C_INITIALIZE ; In not linked, adress is zeroed
CMP r0, #0 ; Test if zero
BEQ noCLinked ; Branch on the result
```
## DCB
- La directive *DCB*
- Réserve un ou plusieurs [bytes](#Tailles) en mémoire
- définit la valeur initiale de ces positions mémoires
- Lors de l'exécution du programme (runtime), les valeurs de ces positions mémoires peuvent être changées
``` armasm
nbChar DCB 24, 32
cString DCB "C_string", 0
```
>[!warning]
>Si la directive ***DCB*** est suivie par une instruction, l'usage de la directive ***[ALIGN](#ALIGN-amp-ORG)*** est indispensable
![](img%2FPasted%20image%2020231116153738.png)
## DCW
- La directive *DCW*
- Réserve un ou plusieurs [halfword (16bits)](#Tailles) en mémoire à une adresse paire
- Définit la valeur initiale de ces positions mémoires
``` armasm
number EQU 10
data DCW -255, 2*number
```
>[!warning]
>Si la directive ***DCW*** est suivie par une instruction, l'usage de la directive ***[ALIGN](#ALIGN-amp-ORG)*** est indispensable
![](img%2FPasted%20image%2020231116154303.png)
## DCD
- La directive *DCD*
- Réserve un ou plusieurs [word (32 bits)](#Tailles) en mémoire à une adresse multiple de 4
- Définit la valeur initiale de ces positions mémoires
```armasm
data1 DCD 1, 5, 20 ; Defines 3 words containing
; decimal values 1,5,and 20
data2 DCD data1 + 4 ; Defines 1 word containing 4 +
; the address of the label data1
```
![](img%2FPasted%20image%2020231116154853.png)
## SPACE
- La directive *SPACE* réserve un bloc mémoire initialisé à zéro
- La taille du bloc mémoire est exprimée en byte
```armasm
AREA MyData, DATA, READWRITE
buffer SPACE 255 ; Define 255 bytes of zeroed store
```
>[!warning]
>Si la directive ***SPACE*** est suivie par une instruction, l'usage de la directive ***[ALIGN](#ALIGN-amp-ORG)*** est indispensable
![](img%2FPasted%20image%2020231116155200.png)
## ALIGN & ORG
- La directive *ALIGN* aligne la position courante à un multiple de *expr*, en ajoutant si nécessaire des bytes de bourrage
```armasm
label1 DCB 1 ; PC now misaligned
ALIGN ; Ensure that Func1 addresses
Func1 ; now aligned on 4-byte boundary
MOV r5, #0x5
... ... ; Code
MOV pc, lr ; Code
ALIGN 8 ; Now aligned on 8-byte boundary
rout2 ... ... ; Code
```
- La directive *ORG* fixe la valeur absolue de la position courante
```armasm
ORG 0x4000 ; instructions start at addr 0x4000
MOV r5, #0x5
... ... ; Code
MOV pc, lr ; Code
ORG 0x8000 ; data start at addr 0x8000
Data1 DCD 12
Data2 DCD 0
```
+4
View File
@@ -1,6 +1,7 @@
# Taille des paquets de bits
Nom valable uniquement pour l'architecture ARM, attention certain nom peuvent changer pour d'autres architecture
|Nom |Taille |
|-----------|-------|
|Nibble | 4 bits|
@@ -8,3 +9,6 @@ Nom valable uniquement pour l'architecture ARM, attention certain nom peuvent ch
|Halfword |16 bits|
|Word |32 bits|
|Double word|64 bits|
[PLA.md](PLA.md)
[ASM.md](ASM.md)
Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

+41 -5
View File
@@ -11,14 +11,36 @@
<body>
<div id="app"></div>
<script>
window.$docsify = {
name: '',
repo: ''
},
}
window.$docsify = {
name: '',
repo: '',
maxLevel: 3,
coverpage: false,
autoHeader: true,
loadNavbar: true,
pagination: {
previousText: {
'/en/': 'PREV',
'/' : 'PREC'
},
nextText: {
'/en/': 'NEXT',
'/': 'SUIV'
},
crossChapter: true,
crossChapterText: true,
},
latex: {
inlineMath : [['$', '$'], ['\\(', '\\)']], // default
displayMath : [['$$', '$$']], // default
customOptions: {} // default
}
};
</script>
<!-- Docsify v4 -->
<script src="//cdn.jsdelivr.net/npm/docsify@4"></script>
<!-- Render graph (UML/Mermaid/... -->
<script src="//unpkg.com/docsify-kroki">
kroki: {
langs: [
@@ -52,7 +74,21 @@
],
serverPath: "//localhost:8000/"
</script>
<!-- Copy code button -->
<script src="//cdn.jsdelivr.net/npm/docsify-copy-code/dist/docsify-copy-code.min.js"></script>
<!-- Pagination -->
<script src="//unpkg.com/docsify-pagination/dist/docsify-pagination.min.js"></script>
<!-- LateX -->
<script src="//cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
<script src="//cdn.jsdelivr.net/npm/docsify-latex@0"></script>
<!-- Flexible alert -->
<script src="https://unpkg.com/docsify-plugin-flexible-alerts"></script>
<!-- Code highlights -->
<script src="//cdn.jsdelivr.net/npm/prismjs@1/components/prism-armasm.js"></script>
</body>
</html>
+136
View File
@@ -0,0 +1,136 @@
# Statistique
$E$ : Ensemble de tous les éléments de l'expérience
$P(u) = \frac{\#u}{\#E}$ : Probabilité que $u$ soit vrai dans l'ensemble $E$.
$P(v) = \frac{\#v}{\#E}$ : Probabilité que $v$ soit vrai dans l'ensemble $E$.
$P(u|v) = \frac{\# (u \space \&\& \space v)}{\#v}$ : Probabilité que $u$ soit vrai dans l'ensemble des $v$ vrai.
$P(u,v) = \frac{\#(u \space \&\& \space v)}{\# E}$ : Probabilité que $u$ et $v$ soient vrai dans l'ensemble $E$
$$\begin{align}
Mean &= \sum^{n}_{k=0} P_{x}\cdot X_{k} \\
Variance &= \sum^{n}_{k=0}(X_{k}-Mean)^{2}\cdot P_{x} \\
ecart-type &= \sqrt{ Variance }
\end{align}$$
# Digitalisation d'un signal
![[Pièces jointes/Pasted image 20230921090301.png]]
## Quantification
résolution: $2^{\text{nbits}}$
>[!example] MATLAB (A2)
>![[Pièces jointes/Pasted image 20231114203300.png]]
>![[Pièces jointes/Pasted image 20231114203320.png]]
### Déquantification
>[!example] MATLAB (A2)
>![[Pièces jointes/Pasted image 20231114203411.png]]
>$$\begin{align} \\
\text{Add: }
\frac{\frac{Q_{P}}{2^{double(Q_{Nb})-1}}}{2}
\text{ for offset and take middle of value}
\end{align}$$
>
>
>![[Pièces jointes/Pasted image 20231114203425.png]]
## Échantillonnage
Mesure à chaque clock
$f_{s} = 2*f_{out}$
$f_{s}$ : Fréquence de sample
>[!example] MATLAB (A1)
>![[Pièces jointes/Pasted image 20231114203111.png]]
### Reconstruction
Passe-bas avec $f_{c} = \frac{f_{s}}{2}$
$f_{c}$ : Fréquence de coupure
>[!example] MATLAB (A1)
>![[Pièces jointes/Pasted image 20231114203129.png]]
# Contrôle d'erreur
## ARQ
<u>Automatic Repeat reQuest</u>
Technique pour contrôler les erreurs en communication bidirectionnelle
Avec un canal de retour comme "stop & go" ou "TCP"
![[Pièces jointes/Pasted image 20231114204351.png]]
## FEC
<u>Forward Error Coding</u>
Technique pour contrôler les erreurs en communication monodirectionnelle :
- Envoie de 3 fois ou n (impair) fois chaque bit
- Avec code de Hamming
![[Pièces jointes/Pasted image 20231114204109.png]]
<u>Exemple FEC 1/3 (1 bit de donnée pour 3 bit transmit)</u>
$E_{0}$ : 0 bit faux
$E_{1}$ : 1 bit faux
$E_{2}$ : 2 bits faux
$E_{3}$ : 3 bits faux
$P(E_{0})=(1-BER)\cdot(1-BER)\cdot(1-BER)$
$P(E_{1})=(1-BER)\cdot(1-BER)\cdot BER$
$P(E_{2})=(1-BER)\cdot BER \cdot BER$
$P(E_{3})=BER\cdot BER\cdot BER$
|bit 1 | bit 2 | bit 3 | Résultat | P(juste) |
|---|---|---|---|---|
|J|J|J|Juste|$P(E_{0})$|
|J|J|F|Juste|$P(E_{1})$|
|J|F|J|Juste|$P(E_{1})$|
|J|F|F|Faux|$P(E_{2})$|
|F|J|J|Juste|$P(E_{1})$|
|F|J|F|Faux|$P(E_{2})$|
|F|F|J|Faux|$P(E_{2})$|
|F|F|F|Faux|$P(E_{3})$|
Pour la probabilité d'erreur total, on additionne les faux résultats. Soit :
$$\begin{align}
P(E) &= P(E_{2}) + P(E_{2}) + P(E_{2}) +P(E_{3}) \\
&= 3\cdot P(E_{2})+P(E_{3}) \\
&= 3\cdot (1-BER)\cdot BER \cdot BER + BER\cdot BER\cdot BER \\
&= 3\cdot BER^{2}-2\cdot BER^{3}
\end{align}$$
### MATLAB (B1-B2)
>[!example] Codage du canal
>![[Pièces jointes/Pasted image 20231114212419.png]]
>[!example] Décodage du canal
>![[Pièces jointes/Pasted image 20231114212538.png]]
# Codage physique
Bits $\to$ Symbol
<u>Symbol:</u>
Représentation d'un ou plusieurs bits dans le monde réel
## BPSK
2 symboles - 1 bit / symbole
![[Pièces jointes/Pasted image 20231114205027.png]]
## QPSK
4 symboles - 2 bits / symbole
![[Pièces jointes/Pasted image 20231114205105.png]]
# Transmission Radio
## AM
Modulation de l'Amplitude
![[Pièces jointes/Pasted image 20231114210448.png]]
## FM
Modulation de la Fréquence
![[Pièces jointes/Pasted image 20231114210510.png]]
## PM
Modulation de la Phase
![[Pièces jointes/Pasted image 20231114210537.png]]