<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Plateforme CALF on ENSEIRB-MATMECA</title><link>https://emmk-73cb1c.gitlab.io/fr/posts/calf/</link><description>Recent content in Plateforme CALF on ENSEIRB-MATMECA</description><generator>Hugo -- gohugo.io</generator><language>fr</language><lastBuildDate>Fri, 01 Sep 2023 00:00:00 +0200</lastBuildDate><atom:link href="https://emmk-73cb1c.gitlab.io/fr/posts/calf/index.xml" rel="self" type="application/rss+xml"/><item><title>Plateforme CALF: Organisation mémoire</title><link>https://emmk-73cb1c.gitlab.io/fr/posts/calf/mem/</link><pubDate>Mon, 01 Sep 2025 00:00:00 +0200</pubDate><guid>https://emmk-73cb1c.gitlab.io/fr/posts/calf/mem/</guid><description>&lt;h2 id="adresses">Adresses&lt;/h2>
&lt;p>Au sein de la plateforme CALF, les adresses émises par le processeur sont utilisées pour rediriger les requêtes.
Ainsi, selon les valeurs, certaines sont envoyées vers la mémoire RAM, les registres GPIO8, l&amp;rsquo;UART &lt;em>etc.&lt;/em>
La table ci-dessous présente les valeurs définies par défaut.
Celles-ci peuvent être modifiées lors de la configuration du matériel (aussi bien dans la version &lt;a href="https://gitlab.com/escou64-emmk/calf/-/blob/main/src/main/vhd/top/sys.vhd?ref_type=heads" target="_blank" rel="noopener">VHDL&lt;/a> que &lt;a href="https://gitlab.com/escou64-emmk/calf/-/blob/main/src/main/scala/top/params.scala?ref_type=heads" target="_blank" rel="noopener">Chisel&lt;/a>).&lt;/p>
&lt;center>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th style="text-align: left">Nom&lt;/th>
&lt;th style="text-align: center">Début&lt;/th>
&lt;th style="text-align: center">Taille&lt;/th>
&lt;th style="text-align: center">Type&lt;/th>
&lt;th style="text-align: left">Description&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td style="text-align: left">&lt;strong>RAM&lt;/strong>&lt;/td>
&lt;td style="text-align: center">&lt;code>0x00000000&lt;/code>&lt;/td>
&lt;td style="text-align: center">&lt;code>0x00000000&lt;/code>&lt;/td>
&lt;td style="text-align: center">&lt;code>RWX&lt;/code>&lt;/td>
&lt;td style="text-align: left">Mémoire générale du système, utilisée pour les instructions et les données.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align: left">&lt;strong>GPIO8&lt;/strong>&lt;/td>
&lt;td style="text-align: center">&lt;code>0x00000800&lt;/code>&lt;/td>
&lt;td style="text-align: center">&lt;code>0x00000010&lt;/code>&lt;/td>
&lt;td style="text-align: center">&lt;code>RW-&lt;/code>&lt;/td>
&lt;td style="text-align: left">Registres de configuration des entrées et sorties génériques.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align: left">&lt;strong>UART&lt;/strong>&lt;/td>
&lt;td style="text-align: center">&lt;code>0x00000840&lt;/code>&lt;/td>
&lt;td style="text-align: center">&lt;code>0x00000020&lt;/code>&lt;/td>
&lt;td style="text-align: center">&lt;code>RW-&lt;/code>&lt;/td>
&lt;td style="text-align: left">Registres de configuration de l&amp;rsquo;UART.&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/center>
&lt;h2 id="mémoire">Mémoire&lt;/h2>
&lt;h2 id="périphériques">Périphériques&lt;/h2>
&lt;h3 id="gpio8">GPIO8&lt;/h3>
&lt;p>&lt;strong>GPIO8&lt;/strong> est un périphérique basique permettant de contrôler l&amp;rsquo;état de 8 entrées/sorties.
Pour cela, il utilise 3 registres de 8 bits: &lt;code>ENO&lt;/code>, &lt;code>IN&lt;/code> et &lt;code>OUT&lt;/code>.
Chaque bit &lt;em>b&lt;/em> de ces registres correspond à l&amp;rsquo;entrée/sortie &lt;em>b&lt;/em>.&lt;/p></description></item><item><title>Plateforme CALF: Processeur</title><link>https://emmk-73cb1c.gitlab.io/fr/posts/calf/core/</link><pubDate>Mon, 01 Sep 2025 00:00:00 +0200</pubDate><guid>https://emmk-73cb1c.gitlab.io/fr/posts/calf/core/</guid><description>&lt;p>&lt;img src="https://emmk-73cb1c.gitlab.io/fr/posts/calf/core/fig/core.fr.svg"
alt="Microarchitecture du processeur CALF"
width="500"
class="center"
>
&lt;/br>&lt;/p>
&lt;p>Le processeur CALF est un processeur libre et ouvert basé sur l&amp;rsquo;architecture RISC-V.
Au sein de la plateforme CALF, il est responsable de l&amp;rsquo;exécution des programmes permettant la réalisation d&amp;rsquo;application.
La microarchitecture du processeur est conçu autour d&amp;rsquo;une machine d&amp;rsquo;états finis.
Il réalise donc une implémentation multi-cycle de l&amp;rsquo;exécution des opérations, pouvant aller de 4 à 7 cycles selon le type d&amp;rsquo;instructions et des paramètres utilisés.&lt;/p></description></item><item><title>Plateforme CALF: Système global</title><link>https://emmk-73cb1c.gitlab.io/fr/posts/calf/sys/</link><pubDate>Mon, 01 Sep 2025 00:00:00 +0200</pubDate><guid>https://emmk-73cb1c.gitlab.io/fr/posts/calf/sys/</guid><description>&lt;p>&lt;img src="https://emmk-73cb1c.gitlab.io/fr/posts/calf/core/fig/sys.fr.svg"
alt="Vue globale du système CALF"
width="400"
class="center"
>
&lt;/br>&lt;/p>
&lt;p>CALF (pour &lt;em>Core Architecture to Learn Fundamentals&lt;/em>) est une plateforme numérique conçue pour des projets pédagogiques et de recherche.
Elle intègre tous les composants nécessaires pour l&amp;rsquo;implémentation d&amp;rsquo;un microcontrôleur minimaliste, sur FPGA ou ASIC:&lt;/p>
&lt;ul>
&lt;li>Un processeur RISC-V responsable de l&amp;rsquo;exécution des programmes.&lt;/li>
&lt;li>Une mémoire RAM paramétrable pour le code et les données.&lt;/li>
&lt;li>Un &lt;em>bootloader&lt;/em> pour l&amp;rsquo;initialisation de la mémoire au démarrage. Il est directement connecté au module UART pour la réception des données.&lt;/li>
&lt;li>Un module UART pour les communications externes.&lt;/li>
&lt;li>Un module GPIO8 pour le pilotage de 8 entrées / sorties.&lt;/li>
&lt;/ul>
&lt;p>Le système est disponible en 2 versions RTL: une décrite en Chisel et une autre en VHDL.
L&amp;rsquo;intérêt majeur est de faciliter le passage d&amp;rsquo;un langage à un autre en fournissant des exemples de blocs aux fonctionnalités identiques.&lt;/p></description></item><item><title>Plateforme CALF: Utilisation</title><link>https://emmk-73cb1c.gitlab.io/fr/posts/calf/usr/</link><pubDate>Mon, 01 Sep 2025 00:00:00 +0200</pubDate><guid>https://emmk-73cb1c.gitlab.io/fr/posts/calf/usr/</guid><description>&lt;h2 id="installation">Installation&lt;/h2>
&lt;h3 id="téléchargement">Téléchargement&lt;/h3>
&lt;p>Pour commencer, il est nécessaire de télécharger le projet.
Celui-ci utilise &lt;em>git&lt;/em> comme gestionnaire de versions et est hébergé sur &lt;a href="https://gitlab.com/escou64-emmk/calf" target="_blank" rel="noopener">Gitlab&lt;/a>.
Pour le télécharger, utiliser les commandes suivantes:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e"># Avec SSH configuré sur Gitlab&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> git clone git@gitlab.com:escou64-emmk/calf.git
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e"># Ou sans SSH: git clone https://gitlab.com/escou64-emmk/calf.git&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e"># Déplacement dans le répertoire&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> cd calf
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e"># Utilisation de la branche riscv&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> git checkout riscv
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="configuration-de-lenvironnement">Configuration de l&amp;rsquo;environnement&lt;/h3>
&lt;p>Pour la simulation et l&amp;rsquo;implémentation de la plateforme, plusieurs outils sont nécessaires et doivent être installés:&lt;/p></description></item></channel></rss>