add some docs
This commit is contained in:
1 parent
8c4bdd9e41
commit
01d9d71ff5
10 files changed
+402
-5
No files matched your search
@@ -1,5 +1,9 @@
|
||||
#Demo
|
||||
$$
|
||||
E=mc^2
|
||||
$$
|
||||
|
||||
[transmission_process.md](transmission_process.md)
|
||||
## embedding it directly
|
||||
|
||||
```mermaid
|
||||
|
||||
@@ -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
@@ -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
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
## 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
|
||||
|
||||

|
||||
|
||||
## 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
|
||||
```
|
||||

|
||||
|
||||
## 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
|
||||
|
||||

|
||||
|
||||
## 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
|
||||
```
|
||||
|
||||
@@ -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
@@ -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>
|
||||
@@ -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]]
|
||||
Reference in new issue
Block a user