From 1d70a432c996845fe7f6c73d2900ab00948adeb1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= Date: Thu, 2 Jan 2014 13:01:07 +0100 Subject: [PATCH] . --- Makefile | 29 +- bericht.tex => bericht/bericht.tex | 59 +- bericht/bibliography.bib | 11 + graph.dot => bericht/graph.dot | 37 +- bericht/ifathesis.cls | 577 ++ bericht/kopfzeile.eps | 9244 ++++++++++++++++++++++++++++ bericht/kopfzeile.pdf | Bin 0 -> 35634 bytes bericht/nomencl.ist | 75 + bericht/packages.tex | 103 + bericht/rt_folgen.txt | 144 + sqrt.c => c/sqrt.c | 26 +- verilog/heron_ctrl.v | 39 + verilog/heron_fsm.v | 80 + verilog/heron_fsm_tb.v | 62 + 14 files changed, 10440 insertions(+), 46 deletions(-) rename bericht.tex => bericht/bericht.tex (60%) create mode 100644 bericht/bibliography.bib rename graph.dot => bericht/graph.dot (72%) create mode 100644 bericht/ifathesis.cls create mode 100644 bericht/kopfzeile.eps create mode 100644 bericht/kopfzeile.pdf create mode 100644 bericht/nomencl.ist create mode 100644 bericht/packages.tex create mode 100644 bericht/rt_folgen.txt rename sqrt.c => c/sqrt.c (70%) create mode 100644 verilog/heron_ctrl.v create mode 100644 verilog/heron_fsm.v create mode 100644 verilog/heron_fsm_tb.v diff --git a/Makefile b/Makefile index e1db41f..7cc7a0a 100644 --- a/Makefile +++ b/Makefile @@ -1,19 +1,26 @@ -CC?=cc +C99?=c99 -all: bericht +all: bericht check fsm_tb check: sqrt ./sqrt -sqrt: sqrt.c - $(CC) -lm -o sqrt sqrt.c +sqrt: c/sqrt.c + $(C99) -lm -o sqrt c/sqrt.c -debug: - $(CC) -g -lm -o sqrt sqrt.c - gdb ./sqrt +bericht/graph.pdf: bericht/graph.dot + cd bericht; dot -Tpdf graph.dot > graph.pdf -graph.pdf: graph.dot - dot -Tpdf graph.dot > graph.pdf +bericht: bericht/graph.pdf + latexmk -pdf bericht/bericht.tex; -bericht: graph.pdf sqrt - latexmk -pdf bericht.tex; +fsm: verilog/fsm.vcd + gtkwave verilog/fsm.vcd + +fsm_tb: verilog/heron_fsm.vcd + +%.vcd : %.vvp + vvp $< + +%.vvp: %_tb.v %.v + iverilog -o $@ $^ diff --git a/bericht.tex b/bericht/bericht.tex similarity index 60% rename from bericht.tex rename to bericht/bericht.tex index d2aff28..b0a8733 100644 --- a/bericht.tex +++ b/bericht/bericht.tex @@ -1,9 +1,49 @@ -\documentclass[a4paper,landscape]{scrartcl} -\usepackage[T1]{fontenc} -\usepackage{amsmath, amsthm, amssymb} -\usepackage[ansinew]{inputenc} +%******************************************************************************* +% * Copyright (c) 2006-2013 +% * Institute of Automation, Dresden University of Technology +% * +% * All rights reserved. This program and the accompanying materials +% * are made available under the terms of the Eclipse Public License v1.0 +% * which accompanies this distribution, and is available at +% * http://www.eclipse.org/legal/epl-v10.html +% * +% * Contributors: +% * Institute of Automation - TU Dresden, Germany +% * - initial API and implementation +% ******************************************************************************/ -\usepackage{listings} +\documentclass[ + print, % print optimized version of the thesis, standard option + % alternative: +% screen, % makes the thesis better readable on screens (onesided, coloured links) + % use only 'print' OR 'screen' + % ATTENTION: 'screen' changes size of text area slightly. Always optimize document WITH + % 'print' option first for printing (size of graphics etc.) and convert afterwards + % in screen optimized version! + listoffigures, % includes list of figures + listoftables, % includes list of tables + listoflistings, % includes list of listings + abbrevations, % includes index of symbols and abbrevations + bibIfa, % citation style (IfA standard), alternatives: bibNumeric, bibHarvard + langDE % define the language (default: langDE) +]{ifathesis} +\ifaThesis{Belegarbeit} +\ifaAuthor{Jörg Thalheim} +\ifaAuthorBirthday{03.01.1992} +\ifaAuthorBirthplace{Großröhrsdorf} +\ifaAuthorCourse{Informationssystemtechnik} +\ifaAuthorYearOfMatriculation{2011} +\ifaKeywords{Praktikum, Schaltungsentwurf, Verilog} % Keywords included in pdf-file. Could be found e.g. by Windows file search. +\ifaTitleDE{Schaltkreis- und Systementwurf} +\ifaTitleEN{} + +\ifaSupervisorA{Jens-Uwe Schlüßler} +\ifaProfessor{Prof. Dr.-Ing. habil. René Schüffny} +\ifaDayOfSubmission{\today} +\ifaTopicDescriptionPDF{parts/00_Aufgabenstellung.pdf} +\ifaAppendix{example_files/appendix} +\ifaAbstractDE{example_files/00_abstract_de__invalid} +\ifaAbstractEN{example_files/00_abstract_en__invalid} \usepackage{tabularx} \usepackage{graphicx} \usepackage{color} @@ -42,13 +82,16 @@ \begin{document} -\subsection{Algorithmus} +\chapter{Einleitung} +TODO Kapitel 5.1 -> Aufgabenstellung + +\chapter{Beschreibung des Algorithmus} \begin{align} x_{n+1}=\frac{x_n + \frac{a}{x_n}}{2} \end{align} -\subsection{Implementierung in C} +\section{Implementierung in C} \begin{lstlisting} typedef uint32_t u32; void heron_sqrt(u32 *mem) { @@ -92,7 +135,7 @@ Jedes Datenfeld wird als vorzeichenlose Festkommazahl interpretiert. \subsection{Datenflussgraph} \begin{figure}[ht] \centering - \includegraphics[width=0.5\textwidth]{graph.pdf} + \includegraphics[width=0.3\textwidth]{graph.pdf} \label{fig1} \end{figure} diff --git a/bericht/bibliography.bib b/bericht/bibliography.bib new file mode 100644 index 0000000..d25f916 --- /dev/null +++ b/bericht/bibliography.bib @@ -0,0 +1,11 @@ +%% This BibTeX bibliography file was created using BibDesk. +%% http://bibdesk.sourceforge.net/ + + +%% Saved with string encoding Unicode (UTF-8) + +#@misc{mda, +# Date-Added = {2010-01-09 12:34:49 +0100}, +# Date-Modified = {2010-01-09 12:35:30 +0100}, +# Title = {{Model Driven Architecture}}, +# Url = {http://omg.org/mda}} diff --git a/graph.dot b/bericht/graph.dot similarity index 72% rename from graph.dot rename to bericht/graph.dot index ceacebd..1504c68 100644 --- a/graph.dot +++ b/bericht/graph.dot @@ -5,7 +5,7 @@ digraph heron { graph [overlap=scale]; subgraph { edge [weight=3]; - C0 -> C1 -> C2 -> C3 -> C4 -> C5 -> C6 -> C7 -> C8 -> C9 [minlen=3.5]; + C0 -> C1 -> C2 -> C3 -> C4 -> C5 -> C6 -> C7 -> C8 -> C9 -> C10 [minlen=3]; } // variables & constants @@ -13,15 +13,12 @@ digraph heron { mem_i [label="mem[i]"]; mem_i2 [label="mem[i]",shape="box"]; i [label="i"]; - 1 [ ]; - "1a" [label="1" ]; - "1b" [label="1" ]; "1c" [label="1" ]; "1d" [label="1" ]; Finish [label="Finish"]; // operands - s_shift_1 [label=">>",]; + s_shift_1 [label=">> 1",]; i_lt_0 [label=">",]; // i <= mem[0] @@ -36,17 +33,18 @@ digraph heron { i_lt_0 -> mem_s_gte_1 [style=dotted, arrowhead=normal,label="True"]; // else i_lt_0 -> Finish [style=dotted, arrowhead=normal,label="False"]; - { rank=same; C9; Finish;} + { rank=same; C10; Finish;} subgraph i_lt_0 { mem_s_gte_1 [label=">"]; s_div_x [label="/",]; new_x [label="+",]; - s_div_x_shift_1 [label=">>",]; - x_shift_1 [label=">>",]; + s_div_x_shift_1 [label=">> 1",]; + x_shift_1 [label=">> 1",]; old_x_lte_new_x [label=">=",]; dec_i [label="-",]; + comma_fix [label="<< Kommastellen/2"]; // (s > 1) mem_i -> mem_s_gte_1; @@ -56,27 +54,24 @@ digraph heron { // if (s > 1) mem_s_gte_1 -> s_shift_1 [style=dotted,arrowhead=normal,label="True"]; // else - mem_s_gte_1 -> dec_i [style=dotted,arrowhead=normal,label="False"]; + mem_s_gte_1 -> comma_fix [style=dotted,arrowhead=normal,label="False"]; subgraph if_mem_i_gte_1 { // x = s >> 1 mem_i -> s_shift_1; - 1 -> s_shift_1; s_shift_1 -> x [style=dotted,arrowhead=normal,label="C2->C3"]; { rank=same; C3; s_shift_1; x} // (x >> 1) x [shape="box"]; x -> x_shift_1; - "1a" -> x_shift_1; // (s/x) - mem_i -> s_div_x; - x -> s_div_x; + mem_i:ne -> s_div_x:ne; + x -> s_div_x:nw; { rank=same; C4; x_shift_1; s_div_x} // ((s/x) >> 1) s_div_x -> s_div_x_shift_1; - "1b" -> s_div_x_shift_1; { rank=same; C5; s_div_x_shift_1} // (x >> 1) + ((s/x) >> 1); @@ -87,20 +82,26 @@ digraph heron { // (old_x <= X) x -> old_x_lte_new_x; new_x -> old_x_lte_new_x; - new_x -> x [style=dotted,label="C7->C3"]; + new_x -> x [style=dotted,label="C7->C3 || C7->C8"]; + x_2 [shape="box" label="x"]; { rank=same; C7; old_x_lte_new_x;} + x_2 -> comma_fix; + { rank=same; C8; comma_fix x_2} + // if (old_x <= X) - old_x_lte_new_x -> dec_i [style=dotted,arrowhead=normal,label="True"]; + old_x_lte_new_x -> comma_fix [style=dotted,arrowhead=normal,label="True"]; // else old_x_lte_new_x -> x [style=dotted,arrowhead=normal,label="False"]; + comma_fix -> mem_i2 [label="C7->C8", style=dotted]; + comma_fix -> dec_i [style=dotted, arrowhead=normal, label="True"]; + "1c" -> dec_i; i -> dec_i:ne; dec_i:s -> i:s; - new_x -> mem_i2 [label="C7->C8", style=dotted]; - { rank=same; C8; dec_i; mem_i2}; + { rank=same; C9; dec_i; mem_i2}; } } } diff --git a/bericht/ifathesis.cls b/bericht/ifathesis.cls new file mode 100644 index 0000000..d3fd006 --- /dev/null +++ b/bericht/ifathesis.cls @@ -0,0 +1,577 @@ +%!TEX root = example.tex +%******************************************************************************* +% * Copyright (c) 2006-2013 +% * Institute of Automation, Dresden University of Technology +% * +% * All rights reserved. This program and the accompanying materials +% * are made available under the terms of the Eclipse Public License v1.0 +% * which accompanies this distribution, and is available at +% * http://www.eclipse.org/legal/epl-v10.html +% * +% * Contributors: +% * Institute of Automation - TU Dresden, Germany +% * - initial API and implementation +% ******************************************************************************/ + +\def\fileversion{0.1} +\def\filedate{2013/07/05} +\def\filename{ifathesis} + +\NeedsTeXFormat{LaTeX2e} +\ProvidesClass{\filename}[\filedate DA/SA-Klasse des Instituts fuer Automatisierungstechnik, (c) by Stefan Hennig, Arne Sonnenburg, Matthias Freund, Christopher Martin] +\typeout{Class: '\filename' Version \fileversion, Standard DA/SA-Klasse des Instituts fuer Automatisierungstechnik.} + +\newif\if@useListOfFigures\@useListOfFiguresfalse +\DeclareOption{listoffigures}{\@useListOfFigurestrue} + +\newif\if@useListOfTables\@useListOfTablesfalse +\DeclareOption{listoftables}{\@useListOfTablestrue} + +\newif\if@useListOfListings\@useListOfListingsfalse +\DeclareOption{listoflistings}{\@useListOfListingstrue} + +\newif\if@useAbbrevations\@useAbbrevationsfalse +\DeclareOption{abbrevations}{\@useAbbrevationstrue} + +\newif\if@isReadyForPrint\@isReadyForPrinttrue +\DeclareOption{print}{\@isReadyForPrinttrue} +\DeclareOption{screen}{\@isReadyForPrintfalse} + +\newcommand*{\@ifaThesisLanguage}{de} +\DeclareOption{langDE}{\renewcommand*{\@ifaThesisLanguage}{de}} +\DeclareOption{langEN}{\renewcommand*{\@ifaThesisLanguage}{en}} + +\newcommand*{\@ifaBibliographyStyle}{} +\DeclareOption{bibIfa}{\renewcommand*{\@ifaBibliographyStyle}{authoryear-comp}} +\DeclareOption{bibHarvard}{\renewcommand*{\@ifaBibliographyStyle}{alphabetic}} +\DeclareOption{bibNumeric}{\renewcommand*{\@ifaBibliographyStyle}{numeric-comp}} + +\ProcessOptions\relax + +% Lade Basisklasse der Vorlage +\PassOptionsToPackage{% + paper=a4, % Papiergröße + headinclude=true, % Gehört Kopfzeile eher zur Seite oder zum Rand? + footinclude=false, % Gehört Fußzeile eher zur Seite oder zum Rand? + pagesize % Schreibt die Seitengröße ins Seitenregister, + % sodass DVI- und PDF-Seiten die richtige Größe haben. +}{typearea} + +% Setze Bibliographie-Stil +\PassOptionsToPackage{style=\@ifaBibliographyStyle, backend=bibtex8, maxbibnames=99}{biblatex} + +\PassOptionsToPackage{svgnames}{xcolor} % Namensraum für xcolor Paket + +\PassOptionsToPackage{fleqn}{amsmath} + +\LoadClass[ + fontsize=12pt, % Grundschriftgröße + \if@isReadyForPrint BCOR=15mm\else BCOR=0mm\fi, % Binderandgröße + \if@isReadyForPrint DIV=10\else DIV=9\fi, % Teil der Seite, der als Seitenrand berücksichtigt wird (auch =calc mgl.): + % Z.B. DIV=10: Randbreite Oben und Mitte 1/10, Unten und Außen 2/10 der Seite. + % Regel: 60 bis 70 Zeichen pro Zeile, weniger ist besser, niemals mehr als 80! + captions=tableheading, % Tabellenabstände für TabellenÜBERschriften optimieren + \if@isReadyForPrint twoside=true\else twoside=false\fi, % Dokument zweiseitig? + headings=small, % Relative Größe der Überschriften, small ist besser lesbar und erzeugt weniger Zweizeiligs + fleqn, % Formeln linksbündig + bibliography=totoc, % Literaturverzeichnis im Inhaltsverzeichnis referenziert + numbers=noenddot, % Punkte nach Abschnittsnummern? (Weglassen = Automatik) + % Nach Duden im vorliegenden Bsp. falsch, da auch Buchstaben in Gliederung (Anhang), sieht aber besser aus. +]{scrbook} % Basisklasse der Vorlage: Koma-Skrip Klasse analog zur book-Klasse. + +% ============================================================== +% = Definiere mögliche Parameter zur Konfiguration der Vorlage = +% ============================================================== +%%%%% +% Jetzt müssen zunächst die variablen Angaben geladen werden +\newcommand*{\@ifaThesis}{Diplomarbeit} +\newcommand*{\@ifaAuthor}{Max Mustermann} +\newcommand*{\@ifaAuthorBirthday}{01.01.1970} +\newcommand*{\@ifaAuthorBirthplace}{Dresden} +\newcommand*{\@ifaAuthorCourse}{Informationssystemtechnik} +\newcommand*{\@ifaAuthorYearOfMatriculation}{2000} +\newcommand*{\@ifaKeywords}{Komma-separierte, Liste, mit, Schlagwörtern, zum Thema, der Arbeit} +\newcommand*{\@ifaTitleDE}{Titel der Arbeit} +\newcommand*{\@ifaTitleEN}{Thesis' title goes here} +\newcommand*{\@ifaSupervisorA}{} +\newcommand*{\@ifaSupervisorB}{} +\newcommand*{\@ifaSupervisorC}{} +\newcommand*{\@ifaSupervisorD}{} +\newcommand*{\@ifaSupervisorE}{} +\newcommand*{\@ifaProfessor}{Titel der Arbeit} +\newcommand*{\@ifaDayOfSubmission}{\today} +\newcommand*{\@ifaTopicDescriptionPDF}{he0ohDie} +\newcommand*{\@ifaAppendix}{GoHaigh2} +\newcommand*{\@ifaAbstractDE}{GoHaigh2} +\newcommand*{\@ifaAbstractEN}{GoHaigh2} +\newcommand*{\@ifaReferences}{IPhei0Ox} +\newcommand*{\@ifaAbbrev}{00_Abbrev} +\newcommand*{\@ifaAcknowledgements}{Acknowledgements} +\newcommand*{\@ifaBibliographyBeforeAppendix}{true} +\newcommand*{\@ifaAdditionalContributors}{} + +\newcommand*{\ifaThesis}[1]{\renewcommand*{\@ifaThesis}{#1}} +\newcommand*{\ifaAuthor}[1]{\renewcommand*{\@ifaAuthor}{#1}} +\newcommand*{\ifaAuthorBirthday}[1]{\renewcommand*{\@ifaAuthorBirthday}{#1}} +\newcommand*{\ifaAuthorBirthplace}[1]{\renewcommand*{\@ifaAuthorBirthplace}{#1}} +\newcommand*{\ifaAuthorCourse}[1]{\renewcommand*{\@ifaAuthorCourse}{#1}} +\newcommand*{\ifaAuthorYearOfMatriculation}[1]{\renewcommand*{\@ifaAuthorYearOfMatriculation}{#1}} +\newcommand*{\ifaKeywords}[1]{\renewcommand*{\@ifaKeywords}{#1}} +\newcommand*{\ifaTitleDE}[1]{\renewcommand*{\@ifaTitleDE}{#1}} +\newcommand*{\ifaTitleEN}[1]{\renewcommand*{\@ifaTitleEN}{#1}} +\newcommand*{\ifaSupervisorA}[1]{\renewcommand*{\@ifaSupervisorA}{#1}} +\newcommand*{\ifaSupervisorB}[1]{\renewcommand*{\@ifaSupervisorB}{#1}} +\newcommand*{\ifaSupervisorC}[1]{\renewcommand*{\@ifaSupervisorC}{#1}} +\newcommand*{\ifaSupervisorD}[1]{\renewcommand*{\@ifaSupervisorD}{#1}} +\newcommand*{\ifaSupervisorE}[1]{\renewcommand*{\@ifaSupervisorE}{#1}} +\newcommand*{\ifaProfessor}[1]{\renewcommand*{\@ifaProfessor}{#1}} +\newcommand*{\ifaDayOfSubmission}[1]{\renewcommand*{\@ifaDayOfSubmission}{#1}} +\newcommand*{\ifaTopicDescriptionPDF}[1]{\renewcommand*{\@ifaTopicDescriptionPDF}{#1}} +\newcommand*{\ifaAppendix}[1]{\renewcommand*{\@ifaAppendix}{#1}} +\newcommand*{\ifaAbstractDE}[1]{\renewcommand*{\@ifaAbstractDE}{#1}} +\newcommand*{\ifaAbstractEN}[1]{\renewcommand*{\@ifaAbstractEN}{#1}} +\newcommand*{\ifaReferences}[1]{\renewcommand*{\@ifaReferences}{#1}} +\newcommand*{\ifaAcknowledgements}[1]{\renewcommand*{\@ifaAcknowledgements}{#1}} +\newcommand*{\ifaAbbrev}[1]{\renewcommand*{\@ifaAbbrev}{#1}} +\newcommand*{\ifaBibliographyBeforeAppendix}[1]{\renewcommand*{\@ifaBibliographyBeforeAppendix}{#1}} +\newcommand*{\ifaAdditionalContributors}[1]{\renewcommand*{\@ifaAdditionalContributors}{#1}} + +%------------------------------------------------------------------------- +\RequirePackage{ifthen} + +% Paket für einfache Realisation von String-Vergleichen, die hier in der Vorlage verwendet werden +\RequirePackage{xstring} + +% Absatznummerierung fuer 4 Ebenen (z.B. 2.3.2.1) gemaess IfA Richtlinie einschalten. +\setcounter{secnumdepth}{3} +\setcounter{tocdepth}{3} + +% Lade benötigte Pakete +\RequirePackage{scrhack} %Zur Herstellung der Kompabilitaet mit Paketen, die nicht kompatibel zum KOMA-Script sind. + +\include{packages} + +% definiere Farben +\definecolor{TUDBLAU}{rgb}{0.0,0.348,0.637} +\definecolor{OSGREEN}{rgb}{0,0.75,0.25} + +% Kläre zunächst einige Dinge, die von der Sprache abhängen +\ifthenelse{\equal{\@ifaThesisLanguage}{de}}{ + % Deutsche Pakete + \RequirePackage[ngerman]{babel} % Silbentrennung nach neuer deutscher Rechtschreibung. + \RequirePackage[german]{nomencl} + % Deutsche Begrifflichkeiten + \newcommand{\@conTitle}{Inhaltsverzeichnis} + \newcommand{\@bibTitle}{Literaturverzeichnis} + \newcommand{\@appTitle}{Anhang} + \renewcommand{\@pdftitle}{\@ifaTitleDE} + \renewcommand{\nomname}{Abkürzungs- und Symbolverzeichnis} + \renewcommand{\lstlistlistingname}{Quelltextverzeichnis} +}{ + % Englische Pakete + \RequirePackage[english]{babel} % Silbentrennung nach englischer Rechtschreibung. + \RequirePackage[english]{nomencl} + % Englische Begrifflichkeiten + \newcommand{\@conTitle}{Contents} + \newcommand{\@bibTitle}{References} + \newcommand{\@appTitle}{Appendix} + \renewcommand{\@pdftitle}{\@ifaTitleEN} + \renewcommand{\nomname}{Nomenclature} + \renewcommand{\lstlistlistingname}{List of Listings} +} + +%------------------------------------------------------------------------- +% Macht im Anhang aus "A Quellcode" -> "Anhang A Quellcode" +%------------------------------------------------------------------------- +\newcommand*{\appendixmore}{% + \renewcommand*{\chapterformat}{% + \appendixname~\thechapter\autodot:\enskip} + \renewcommand*{\chaptermarkformat}{% + \appendixname~\thechapter\autodot:\enskip} +} +%------------------------------------------------------------------------- + +% Veränderung der Bildunterschriften und Tabellenüberschriften: +\addtokomafont{caption}{\small} % Kleinere Schriftgröße für Captions +\setkomafont{captionlabel}{\sffamily\bfseries} % Caption-Label fett und serifenlos +\setcapindent{1em} % 2. Zeile der Caption mit hängendem Einzug + +% Anpassung des Literaturverzeichnisses +\setlength{\bibitemsep}{10pt} +\defbibheading{bibliography}{ + \chapter*{\@bibTitle} + \addcontentsline{toc}{chapter}{\@bibTitle} +} +% Notwendig für Autovervollständigung der Zitate im Texnic Center +\renewcommand*{\bibliography}[1]{\addbibresource{#1.bib}} +% Anpassung für eckige Klammern bei 'authoryear-comp' +\ifthenelse{\equal{\@ifaBibliographyStyle}{authoryear-comp}}{\renewcommand*{\citep}[2][]{\mkbibbrackets{\cite[#1]{#2}}}}{} + +%------------------------------------------------------------------------- +% Löst Probleme mit deutschen Umlauten in Listings +%------------------------------------------------------------------------- +\lstset{literate=% + {Ö}{{\"O}}1 + {Ä}{{\"A}}1 + {Ü}{{\"U}}1 + {ß}{{\ss}}2 + {ü}{{\"u}}1 + {ä}{{\"a}}1 + {ö}{{\"o}}1 +} + +%------------------------------------------------------------------------- +% Integriert Listings und baut diese als Gleitobjekt aus, wenn gewünscht +%------------------------------------------------------------------------- +% Usage: \listing{}{