From 20d3e010d6609437dd3a60777dd92b22f556a85e Mon Sep 17 00:00:00 2001 From: Abdul-Karim Bennett Date: Wed, 25 Jan 2017 06:59:36 +0100 Subject: [PATCH] Add files and docu for UFM_control.vhd Add funcionality load/save from/to flash (via UFM_control.vhd) Change clock of PROC_REGS and THE_UART to clk_33 Update documentation for Logicbox --- .../Doku_UFM_control/Doku_UFM_control.pdf | Bin 0 -> 116467 bytes .../Doku_UFM_control/Doku_UFM_control.tex | 299 +++++++++++++++++ UFM_control/Doku_UFM_control/UFM_DATA_OUT.png | Bin 0 -> 6859 bytes .../Doku_UFM_control/UFM_DATA_TO_UFM.png | Bin 0 -> 10246 bytes UFM_control/UFM_control.vhd | 311 ++++++++++++++++++ code/UFM_control.vhd | 311 ++++++++++++++++++ cores/flash.ipx | 8 + cores/flash.lpc | 90 +++++ cores/flash.vhd | 202 ++++++++++++ default/diamond/LogicBox.ldf | 20 +- default/logicbox.vhd | 273 ++++++++------- docu/main.pdf | Bin 0 -> 104824 bytes docu/main.tex | 69 +++- pinout/logicbox.lpf | 8 +- 14 files changed, 1470 insertions(+), 121 deletions(-) create mode 100644 UFM_control/Doku_UFM_control/Doku_UFM_control.pdf create mode 100644 UFM_control/Doku_UFM_control/Doku_UFM_control.tex create mode 100644 UFM_control/Doku_UFM_control/UFM_DATA_OUT.png create mode 100644 UFM_control/Doku_UFM_control/UFM_DATA_TO_UFM.png create mode 100644 UFM_control/UFM_control.vhd create mode 100644 code/UFM_control.vhd create mode 100644 cores/flash.ipx create mode 100644 cores/flash.lpc create mode 100644 cores/flash.vhd create mode 100644 docu/main.pdf diff --git a/UFM_control/Doku_UFM_control/Doku_UFM_control.pdf b/UFM_control/Doku_UFM_control/Doku_UFM_control.pdf new file mode 100644 index 0000000000000000000000000000000000000000..66517338def626ca86327acc34495c70cdba763a GIT binary patch literal 116467 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 YTMzK(Sz><*Xoi8Isd;!5v=piT4}vo$M*si- literal 0 HcmV?d00001 diff --git a/UFM_control/Doku_UFM_control/Doku_UFM_control.tex b/UFM_control/Doku_UFM_control/Doku_UFM_control.tex new file mode 100644 index 0000000..3e6fd43 --- /dev/null +++ b/UFM_control/Doku_UFM_control/Doku_UFM_control.tex @@ -0,0 +1,299 @@ +\documentclass[11pt,a4paper,twoside]{scrartcl} %twoside + +%Einstellungen der Seitenr?nder +\usepackage[left=3.5cm,right=3cm,top=2.5cm,bottom=2.5cm,includeheadfoot]{geometry} +\usepackage[utf8]{inputenc} +\usepackage{amsfonts} +\usepackage[american]{babel} +\usepackage[T1]{fontenc} +\usepackage[pdftex]{graphicx} +\usepackage{pslatex} +\usepackage{array} +\usepackage{rotating} +\usepackage{multirow} +\usepackage{tabularx} +\usepackage{url} +\linespread{1.15} +\usepackage{booktabs} +\usepackage{longtable} +\usepackage{ltxtable} +\usepackage{upgreek} +\usepackage{listings} +\usepackage{scrtime} +\usepackage{lscape} +\usepackage{enumerate} +\usepackage{textcomp} +\usepackage{wrapfig} +\usepackage[caption=false]{subfig} +\usepackage{amsmath} +\usepackage{setspace} +\usepackage[update,prepend]{epstopdf} +\usepackage[table]{xcolor} +\definecolor{light-gray}{gray}{0.90} + + + +\definecolor{darkblue}{rgb}{.1,.1,.6} +\definecolor{darkgray}{rgb}{.5,.5,.5} +\usepackage[linkbordercolor={0 0 0}, + pdfborder={0 0 0}, + bookmarks, + citecolor=blue, + linkcolor=darkblue, + colorlinks=true, + urlcolor=darkblue]{hyperref} +\usepackage{cite} + +\newcolumntype{W}[1]{>{\centering\let\newline\\\arraybackslash\hspace{0pt}}m{#1}} +\newcolumntype{L}{>{\arraybackslash}X} +\newcolumntype{C}{>{\centering\arraybackslash}X} + +%%\usepackage{fancyhdr} +%%\pagestyle{headings}%{fancy} +%%\fancyhf{} +%%\fancyhead[R]{\nouppercase{\leftmark}} +%%\renewcommand{\headrulewidth}{0.5pt} +%%\fancyfoot[C]{\thepage} +%\renewcommand{\footrulewidth}{0} +%\usepackage[sort,square]{natbib} +%\usepackage{mathptmx} +%\usepackage{pslatex} +\usepackage{scrpage2} +\usepackage[toc,title]{appendix} + +\newenvironment{itemize*}% + {\begin{itemize}% + \setlength{\itemsep}{0pt}% + \setlength{\parskip}{0pt}% + \setlength{\topsep}{1pt}% + \setlength{\partopsep}{1pt}}% + {\end{itemize}} + +\newenvironment{description*}% + {\begin{description}% + \setlength{\itemsep}{0pt}% + \setlength{\parskip}{0pt}% + \setlength{\topsep}{1pt}% + \setlength{\partopsep}{1pt}}% + {\end{description}} + +\title{Documentation UFM\_control.vhd} +\date{\today ~-~\thistime} +\author{Abdul-Karim Bennett} + + +\newcommand{\files}[1]{\texttt{#1}} +\newcommand{\signal}[1]{\textsc{#1}} +\newcommand{\genericname}[1]{\textsc{#1}} +\newcommand{\constname}[1]{\textsc{#1}} +\newcommand{\netname}[1]{\textsc{#1}} +\newcommand{\cmdname}[1]{\texttt{#1}} +\newcommand{\addr}[1]{\texttt{#1}} +\bibliographystyle{alpha} + +\usepackage{remreset} +\makeatletter\@removefromreset{footnote}{chapter}\makeatother + +\lstset { language = bash, numbers = none, breaklines=true, stringstyle=\color{black}\ttfamily } + + + +\usepackage{listings} +\lstdefinelanguage{VHDL}{ + morekeywords={ + library,use,all,entity,is,port,in,out,end,architecture,of, + begin,and + }, + morecomment=[l]-- +} + +%\usepackage{xcolor} +\colorlet{keyword}{blue!100!black!80} +\colorlet{comment}{green!90!black!90} +\lstdefinestyle{vhdl}{ + language = VHDL, + basicstyle = \ttfamily, + keywordstyle = \color{keyword}\bfseries, + commentstyle = \color{comment} +} + +\begin{document} +\lstset{language=VHDL} + +\newcounter{line} +\newcounter{ct} + +\maketitle + +\vspace*{\fill} +\vspace*{\fill} +\clearpage +\tableofcontents +\cleardoublepage + + + +\section{Overview} +With the entity UFM\_control.vhd data can be saved/fetched bytewise to/from the Userflashmemory (UFM). The implementation is intended for Lattice MachXO3 FPGAs but should also run on MachXO2 FPGAs. +\newline +The entity is built in order that data can be handled bytewise, but internally the data will always be written or read pagewise. One UFM-page consists of 16 bytes. Prior to writing to the UFM all data contained in it will be erased. Therefore data that is to be kept has to be stored elsewhere prior to writing. A read/write event always reads/writes all specified data. +\newline +\newline +\textbf{The dependencies of UFM\_control. vhd are as follows:} + +UFM\_control. vhd $\rightarrow$ flashram.vhd + +UFM\_control. vhd $\rightarrow$ UFM\_WB.v $\rightarrow$ flash.vhd + + + + + + +\section{Port Description and Parameters} +Table \ref{tabportdescription} shows the portdescription. The number of of datapages that are to be read (NO\_DATAPAGES; one page = 16 byte) has to be specifies as well as the startpage (UFM\_STARTPAGE) which specifies where the written data will be located/start inside the UFM. +\newline +Depending on the clockfrequency that is used for CLK the parameter READ\_DELAY in the module UFM\_WB.v has to be adjusted. When using another device one can make corresponding adjustments in the file flash.vhd. For further information see inside according files. +\newline +\begin{table}[h] +\begin{tabular}{ l| l| l| l } + \textbf{Port} & \textbf{Type} & \textbf{Width(Bits)} & \textbf{Descrition}\\ + \hline + NO\_DATAPAGES & generic & integer & no datapages to read/write\\ + UFM\_STARTPAGE & generic & 10 &startpage of data in UFM\\ \hline + CLK & in & 1 & clock input\\ + CMD & in & 1 & '0' - Read; '1' - Write\\ + GO & in & 1 & starts read/write process\\ + BUSY & out & 1 & operation in progress\\ + RESET & in & 1 & active high reset\\ \hline + DATA\_IN & in & 8 & datainput\\ + DATA\_OUT & out & 8 &dataoutput\\ + DATABYTE\_COUNTER & out & 15 & no of databyte to read/write\\ + BUS\_READY\_IN & in &1 & interface signal\\ + BUS\_READY\_OUT & out &1 & interface signal\\ \hline + FLASH\_ERROR & out & 1 &error of flashmodule\\ +\end{tabular} + \caption{Portdescription} + \label{tabportdescription} +\end{table} + +\section{Interface} +The data will be clocked out bytewise until all bytes/pages specified with NO\_DATAPAGES are processed. CMD determines wether to read or write to the UFM. GO triggers a read or write procedure. DATA\_IN accepts new data while writing and DATA\_OUT outputs the data while reading. DATABYTE\_COUNTER tells which byte currently has to be written or read. It starts with zero and always goes up to 16 * NO\_DATAPAGES. +\newline +FLASH\_ERROR is connected to the flash-interface inside UFM\_control. If an error occurs (only) the internal statemachine will be reset automatically. With RESET the statemachine and also the other components of UFM\_control will be reset. + + +\subsection{Writing to UFM} +A write process is initiated by setting CMD to '1' and asserting GO. Consequently BUSY will be set high until the process is complete. When BUS\_READY\_OUT is asserted UFM\_control is ready to accept the new byte at the port DATA\_IN. DATABYTE\_COUNTER specifies which byte to use. When the databyte is ready BUS\_READY\_IN has to be asserted and kept high until BUS\_READY\_OUT is low again (at which point the data is taken over). When BUS\_READY\_IN gets low again the internal statmachine of UFM\_control prepares the next byte. This goes on until all bytes are processed. Figure \ref{fig_datatoregister} shows the related timing diagram. + +\begin{figure}[h] + \centering + \includegraphics[width=1\textwidth]{UFM_DATA_TO_UFM.png} + \caption{Timing diagramm: Copy data from register to UFM} + \label{fig_datatoregister} +\end{figure} + + +\subsection{Reading from UFM} +A read process is initiated by setting CMD to '0' and asserting GO. Consequently BUSY will be set high until the process is complete. +When BUS\_READY\_OUT is asserted UFM\_control signals that a new byte specified by DATABYTE\_COUNTER is ready to be read out from UFM\_DATA\_OUT. Asserting BUS\_READY\_IN signals that the data has been taken over. When the data is copied BUS\_READY\_IN is to be set low again. Only then the statemachine of UFM\_control will prepare the next byte. +Figure \ref{fig_datatoUFM} shows the related timing diagram. + +\begin{figure}[h] + \centering + \includegraphics[width=1\textwidth]{UFM_DATA_OUT.png} + \caption{Timing diagramm: Copy data from UFM to register} + \label{fig_datatoUFM} +\end{figure} +%\clearpage + + + + +\section{Code Example} +In the following a code example is provided for the usage of UFM\_control.vhd. + +\begin{lstlisting}[style=vhdl] + + --SIGNALS +------------------------------------- + signal ufm_cmd : std_logic := '0'; --CMD=0 => Read; CMD=1 => Write + signal ufm_go : std_logic := '1'; --load default values to registers from UFM at startup + signal ufm_data_in : std_logic_vector(7 downto 0); --directly connected to flashram DataInA + signal ufm_data_out : std_logic_vector(7 downto 0); --directly connected to flashram QB + signal ufm_databyte_counter : unsigned(14 downto 0); + signal ufm_bus_ready_out : std_logic; + signal ufm_bus_ready_in : std_logic; + signal ufm_busy : std_logic; + +-- UFM (FLASH) CONTROLLER +------------------------------------- +THE_UFM : entity UFM_control + generic map( + NO_DATAPAGES => 1, + UFM_STARTPAGE => "00"&x"00" + ) + port map( + CLK => clk_33, + CMD => ufm_cmd, --CMD=0 => Read; CMD=1 => Write + GO => ufm_go, + BUSY => ufm_busy, + RESET => '0', + + DATA_IN => ufm_data_in, + DATA_OUT => ufm_data_out, + DATABYTE_COUNTER => ufm_databyte_counter, + BUS_READY_IN => ufm_bus_ready_in, + BUS_READY_OUT => ufm_bus_ready_out, + FLASH_ERROR => open--ufmflasherror + ); + +-- REGISTERS <=> UFM DATATRANSFER +------------------------------------------------- +PROC_REGS : process begin + wait until rising_edge(clk_33); + + ufm_bus_ready_in <= '0'; + + if ufm_cmd = '0' and ufm_bus_ready_out = '1' then + --copy data from UFM to registers + ufm_bus_ready_in <= '1'; + case to_integer(ufm_databyte_counter) is + when 0 => reg(7 downto 0) <= ufm_data_out; + when 1 => reg(15 downto 8) <= ufm_data_out; + when 2 => reg(23 downto 16) <= ufm_data_out; + when 3 => reg(31 downto 24) <= ufm_data_out; + when others =>null; + end case; + + elsif ufm_cmd = '1' and ufm_bus_ready_out = '1' then + --save data from registers to UFM + ufm_bus_ready_in <= '1'; + case to_integer(ufm_databyte_counter) is + when 0 => ufm_data_in <= reg(7 downto 0); + when 1 => ufm_data_in <= reg(15 downto 8); + when 2 => ufm_data_in <= reg(23 downto 16); + when 3 => ufm_data_in <= reg(31 downto 24); + when others =>null; + end case; + + end if; +end process; +\end{lstlisting} + + + + + + +% \cleardoublepage +% \begin{appendices} +% \end{appendices} +% \cleardoublepage +% \bibliography{biblio} +\end{document} + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: t +%%% End: diff --git a/UFM_control/Doku_UFM_control/UFM_DATA_OUT.png b/UFM_control/Doku_UFM_control/UFM_DATA_OUT.png new file mode 100644 index 0000000000000000000000000000000000000000..5479d57d90319d053af1b246ecae792c4a4da989 GIT binary patch literal 6859 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 GIQM_WKl{@F literal 0 HcmV?d00001 diff --git a/UFM_control/Doku_UFM_control/UFM_DATA_TO_UFM.png b/UFM_control/Doku_UFM_control/UFM_DATA_TO_UFM.png new file mode 100644 index 0000000000000000000000000000000000000000..167591c98acbb84056a5e5a01a860a2224e9f69f GIT binary patch literal 10246 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 H&forj+PU&x literal 0 HcmV?d00001 diff --git a/UFM_control/UFM_control.vhd b/UFM_control/UFM_control.vhd new file mode 100644 index 0000000..45d2b3e --- /dev/null +++ b/UFM_control/UFM_control.vhd @@ -0,0 +1,311 @@ +--############################################################################## +-- With the entity UFM_control.vhd data can be saved/fetched bytewise to/from the +-- Userflashmemory (UFM). The implementation is intended for Lattice MachXO3 FPGAs +-- but should also run on MachXO2 FPGAs. +--############################################################################## + +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; + +library machxo3lf; +use machxo3lf.all; + +library work; +use work.all;--.trb_net_std.all; + +entity UFM_control is + generic( + NO_DATAPAGES : integer := 1; + UFM_STARTPAGE : std_logic_vector := "00"&x"00" + ); + port( + CLK : in std_logic; + + CMD : in std_logic; --CMD=0 => Read; CMD=1 => Write + GO : in std_logic; --initiate read/write process + BUSY : out std_logic; --operation in progress + RESET : in std_logic; --reset active high + + DATA_IN : in std_logic_vector(7 downto 0); + DATA_OUT : out std_logic_vector(7 downto 0); --directly connected to QB of THE_FLASH_RAM + DATABYTE_COUNTER : out unsigned(14 downto 0); --specifies current databyte + BUS_READY_IN : in std_logic; + BUS_READY_OUT : out std_logic; + + FLASH_ERROR : out std_logic --error signal from flash module, also resets statemachine + ); +end entity; + + +architecture arch of UFM_control is + + --FOR THE STATEMACHINE IN PROC_UFM_CONTROL + ----------------------------------- + type UFM_control_state_t is (IDLE, DELAY, ERASEUFM, ENABLEUFMACCESS, READ1PAGE, READNEXTPAGE, WRITE1PAGE, WRITENEXTPAGE, SETRAMADDRESS, COPYDATAOUT, COPYDATAOUT2, COPYDATATORAM, COPYDATATORAM2, DisableUFMaccess); + signal control_state, control_nextstate : UFM_control_state_t; + signal cmd_buffer : std_logic; + constant no_databytes : unsigned(14 downto 0) := to_unsigned(NO_DATAPAGES * 16, 15); --calculate number of databytes in NO_DATAPAGES pages of UFM + + --FOR THE_FLASH_RAM + ----------------------------------- + signal ram_write_i : std_logic; + signal ram_addr_i : std_logic_vector(3 downto 0); + signal ram_data_in_buffer : std_logic_vector(7 downto 0); + + --FOR CONNECTING THE_FLASH AND THE_FLASH_RAM + ----------------------------------- + signal flashram_addr_i : std_logic_vector(3 downto 0); + signal flashram_cen_i : std_logic; + signal flashram_write_i: std_logic; + signal flashram_data_i : std_logic_vector(7 downto 0); + signal flashram_data_o : std_logic_vector(7 downto 0); + + --FOR THE_FLASH + ----------------------------------- + signal flash_command : std_logic_vector(2 downto 0):= (others => '0'); + signal flash_go : std_logic:= '0'; + signal flash_busy : std_logic; + + + component UFM_WB + port( + clk_i : in std_logic; + rst_n : in std_logic; + cmd : in std_logic_vector(2 downto 0); + ufm_page : in std_logic_vector(12 downto 0); + GO : in std_logic; + BUSY : out std_logic; + ERR : out std_logic; + mem_clk : out std_logic; + mem_we : out std_logic; + mem_ce : out std_logic; + mem_addr : out std_logic_vector(3 downto 0); + mem_wr_data : out std_logic_vector(7 downto 0); + mem_rd_data : in std_logic_vector(7 downto 0) + ); + end component; + + +begin +-------------------------------------------------------------------------- +-- FLASH CONTROLLER WITH RAM +--------------------------------------------------------------------------- +THE_FLASH_RAM : entity flashram + port map( + DataInA => ram_data_in_buffer, + AddressA => ram_addr_i, + ClockA => CLK, + ClockEnA => '1', + WrA => ram_write_i, + ResetA => RESET, + QA => DATA_OUT, + + DataInB => flashram_data_i, + AddressB => flashram_addr_i, + ClockB => CLK, + ClockEnB => flashram_cen_i, + WrB => flashram_write_i, + ResetB => RESET, + QB => flashram_data_o + ); + +THE_FLASH : UFM_WB + port map( + clk_i => CLK, + rst_n => not RESET, --active low + cmd => flash_command, + ufm_page => "111" & UFM_STARTPAGE, + GO => flash_go, + BUSY => flash_busy, + ERR => FLASH_ERROR, + mem_clk => open, + mem_we => flashram_write_i, + mem_ce => flashram_cen_i, + mem_addr => flashram_addr_i, + mem_wr_data => flashram_data_i, + mem_rd_data => flashram_data_o + ); + +--------------------------------------------------------------------------- +-- STATEMACHINE FOR READING AND WRITING TO UFM +--------------------------------------------------------------------------- +PROC_UFM_CONTROL : process + +begin + wait until rising_edge(CLK); + --base values for some signals in statemachine, + --meaning resetting them after respective state + flash_go <= '0'; + ram_write_i <= '0'; + + case control_state is + + when IDLE => + DATABYTE_COUNTER<= (others => '0'); + BUSY <= '0'; + if GO = '1' then + BUSY <= '1'; + cmd_buffer <= CMD; --buffer CMD + control_state <= ENABLEUFMACCESS; + end if; + + when DELAY => + control_state <= control_nextstate; + + when ENABLEUFMACCESS => + --prepare flash for access/further operations + if flash_busy = '0' then + flash_command<="100";--flash enable command + flash_go <= '1'; + + control_state <= DELAY; + if cmd_buffer = '0' then + control_nextstate <= READ1PAGE; + elsif cmd_buffer ='1' then + control_nextstate <= ERASEUFM; + end if; + end if; + + when ERASEUFM => + --erase complete UFM to prepare for new data + if flash_busy = '0' then + flash_command<="111";--erase UFM command + flash_go <= '1'; + control_state <= DELAY; + control_nextstate <= SETRAMADDRESS; + end if; + + when READ1PAGE => + --read one flashpage specified by input UFM_STARTPAGE + if flash_busy = '0' then + flash_command<="000";--command read one page + flash_go <='1'; + control_state <= DELAY; + control_nextstate <= SETRAMADDRESS; + end if; + + when READNEXTPAGE => + --read next UFM page + if flash_busy = '0' then + flash_command<="001";--command read one page + flash_go <='1'; + control_state <= DELAY; + control_nextstate <= SETRAMADDRESS; + end if; + + when SETRAMADDRESS => + --set address of byte in ram to be accessed in next state + if flash_busy = '0' then + ram_addr_i <= std_logic_vector(DATABYTE_COUNTER(3 downto 0)); + control_state <= DELAY; + if cmd_buffer = '0' then + control_nextstate <= COPYDATAOUT; + elsif cmd_buffer = '1' then + control_nextstate <= COPYDATATORAM; + end if; + end if; + + when COPYDATAOUT => + --data interface to UFM_control - + --copy out current byte, meaning making a proper handover since + --the ram output is directly connected to the output of UFM_control + BUS_READY_OUT <= '1'; + if BUS_READY_IN = '1' then + BUS_READY_OUT <= '0'; + control_state <= COPYDATAOUT2; + end if; + + when COPYDATAOUT2 => + if BUS_READY_IN = '0' then + DATABYTE_COUNTER <= DATABYTE_COUNTER + 1; + + if DATABYTE_COUNTER = no_databytes - 1 then + --data read out complete, go for IDLE (->DisableUFMaccess->IDLE) + control_state<=DisableUFMaccess; + elsif DATABYTE_COUNTER(3 downto 0) = "1111" then + --one UFM page complete -> read next one + control_state <= READNEXTPAGE; + else + --read out next byte from ram (respectively current flash page in ram) + control_state<=SETRAMADDRESS; + end if; + end if; + + when COPYDATATORAM => + --data interface to UFM_control - copy the current byte at input DATA_IN to ram + BUS_READY_OUT <= '1'; --tell outside that ready for new data + if BUS_READY_IN = '1' then + --when new data available + ram_data_in_buffer <= DATA_IN; --take data inside (input to buffer/ram) + BUS_READY_OUT <= '0'; --tell data has been taken + + control_state <= COPYDATATORAM2; + end if; + + when COPYDATATORAM2 => + if BUS_READY_IN = '0' then + --wait until outside understood that datatransfer complete + ram_write_i <= '1'; --tell THE_FLASH_RAM to take over byte + DATABYTE_COUNTER<= DATABYTE_COUNTER + 1; + + control_state <= DELAY; + if DATABYTE_COUNTER = to_unsigned(15,DATABYTE_COUNTER'length) then + --ram for first flashpage full -> copy data to first flashpage (specified by UFM_STARTPAGE) + control_nextstate <= WRITE1PAGE; + elsif DATABYTE_COUNTER(3 downto 0) = "1111" then + --ram filled for next flashpage -> copy data to next flashpage + control_nextstate <= WRITENEXTPAGE; + else + --go on filling ram with data + control_nextstate <= SETRAMADDRESS; + end if; + end if; + + when WRITE1PAGE => + --write one flash page specified by input UFM_STARTPAGE + if flash_busy = '0' then + flash_command<="010"; --command write one page + flash_go <='1'; + + control_state <= DELAY; + if DATABYTE_COUNTER = no_databytes then + control_nextstate <= DisableUFMaccess; + else + control_nextstate <= SETRAMADDRESS; + end if; + end if; + + when WRITENEXTPAGE => + --write next flash page + if flash_busy = '0' then + flash_command<="011";--command write next page + flash_go <='1'; + + control_state <= DELAY; + if DATABYTE_COUNTER = no_databytes then + control_nextstate <= DisableUFMaccess; + else + control_nextstate <= SETRAMADDRESS; + end if; + end if; + + when DisableUFMaccess => + --disable flash access + if flash_busy = '0' then + flash_command<="101"; + flash_go <='1'; + + control_state <= DELAY; + control_nextstate <= IDLE; + end if; + end case; + + if RESET = '1' or FLASH_ERROR = '1' then + --if RESET is asserted or flash reports error stop running statemachine and go to IDLE + control_nextstate <= IDLE; + end if; + +end process; + +end architecture; diff --git a/code/UFM_control.vhd b/code/UFM_control.vhd new file mode 100644 index 0000000..45d2b3e --- /dev/null +++ b/code/UFM_control.vhd @@ -0,0 +1,311 @@ +--############################################################################## +-- With the entity UFM_control.vhd data can be saved/fetched bytewise to/from the +-- Userflashmemory (UFM). The implementation is intended for Lattice MachXO3 FPGAs +-- but should also run on MachXO2 FPGAs. +--############################################################################## + +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; + +library machxo3lf; +use machxo3lf.all; + +library work; +use work.all;--.trb_net_std.all; + +entity UFM_control is + generic( + NO_DATAPAGES : integer := 1; + UFM_STARTPAGE : std_logic_vector := "00"&x"00" + ); + port( + CLK : in std_logic; + + CMD : in std_logic; --CMD=0 => Read; CMD=1 => Write + GO : in std_logic; --initiate read/write process + BUSY : out std_logic; --operation in progress + RESET : in std_logic; --reset active high + + DATA_IN : in std_logic_vector(7 downto 0); + DATA_OUT : out std_logic_vector(7 downto 0); --directly connected to QB of THE_FLASH_RAM + DATABYTE_COUNTER : out unsigned(14 downto 0); --specifies current databyte + BUS_READY_IN : in std_logic; + BUS_READY_OUT : out std_logic; + + FLASH_ERROR : out std_logic --error signal from flash module, also resets statemachine + ); +end entity; + + +architecture arch of UFM_control is + + --FOR THE STATEMACHINE IN PROC_UFM_CONTROL + ----------------------------------- + type UFM_control_state_t is (IDLE, DELAY, ERASEUFM, ENABLEUFMACCESS, READ1PAGE, READNEXTPAGE, WRITE1PAGE, WRITENEXTPAGE, SETRAMADDRESS, COPYDATAOUT, COPYDATAOUT2, COPYDATATORAM, COPYDATATORAM2, DisableUFMaccess); + signal control_state, control_nextstate : UFM_control_state_t; + signal cmd_buffer : std_logic; + constant no_databytes : unsigned(14 downto 0) := to_unsigned(NO_DATAPAGES * 16, 15); --calculate number of databytes in NO_DATAPAGES pages of UFM + + --FOR THE_FLASH_RAM + ----------------------------------- + signal ram_write_i : std_logic; + signal ram_addr_i : std_logic_vector(3 downto 0); + signal ram_data_in_buffer : std_logic_vector(7 downto 0); + + --FOR CONNECTING THE_FLASH AND THE_FLASH_RAM + ----------------------------------- + signal flashram_addr_i : std_logic_vector(3 downto 0); + signal flashram_cen_i : std_logic; + signal flashram_write_i: std_logic; + signal flashram_data_i : std_logic_vector(7 downto 0); + signal flashram_data_o : std_logic_vector(7 downto 0); + + --FOR THE_FLASH + ----------------------------------- + signal flash_command : std_logic_vector(2 downto 0):= (others => '0'); + signal flash_go : std_logic:= '0'; + signal flash_busy : std_logic; + + + component UFM_WB + port( + clk_i : in std_logic; + rst_n : in std_logic; + cmd : in std_logic_vector(2 downto 0); + ufm_page : in std_logic_vector(12 downto 0); + GO : in std_logic; + BUSY : out std_logic; + ERR : out std_logic; + mem_clk : out std_logic; + mem_we : out std_logic; + mem_ce : out std_logic; + mem_addr : out std_logic_vector(3 downto 0); + mem_wr_data : out std_logic_vector(7 downto 0); + mem_rd_data : in std_logic_vector(7 downto 0) + ); + end component; + + +begin +-------------------------------------------------------------------------- +-- FLASH CONTROLLER WITH RAM +--------------------------------------------------------------------------- +THE_FLASH_RAM : entity flashram + port map( + DataInA => ram_data_in_buffer, + AddressA => ram_addr_i, + ClockA => CLK, + ClockEnA => '1', + WrA => ram_write_i, + ResetA => RESET, + QA => DATA_OUT, + + DataInB => flashram_data_i, + AddressB => flashram_addr_i, + ClockB => CLK, + ClockEnB => flashram_cen_i, + WrB => flashram_write_i, + ResetB => RESET, + QB => flashram_data_o + ); + +THE_FLASH : UFM_WB + port map( + clk_i => CLK, + rst_n => not RESET, --active low + cmd => flash_command, + ufm_page => "111" & UFM_STARTPAGE, + GO => flash_go, + BUSY => flash_busy, + ERR => FLASH_ERROR, + mem_clk => open, + mem_we => flashram_write_i, + mem_ce => flashram_cen_i, + mem_addr => flashram_addr_i, + mem_wr_data => flashram_data_i, + mem_rd_data => flashram_data_o + ); + +--------------------------------------------------------------------------- +-- STATEMACHINE FOR READING AND WRITING TO UFM +--------------------------------------------------------------------------- +PROC_UFM_CONTROL : process + +begin + wait until rising_edge(CLK); + --base values for some signals in statemachine, + --meaning resetting them after respective state + flash_go <= '0'; + ram_write_i <= '0'; + + case control_state is + + when IDLE => + DATABYTE_COUNTER<= (others => '0'); + BUSY <= '0'; + if GO = '1' then + BUSY <= '1'; + cmd_buffer <= CMD; --buffer CMD + control_state <= ENABLEUFMACCESS; + end if; + + when DELAY => + control_state <= control_nextstate; + + when ENABLEUFMACCESS => + --prepare flash for access/further operations + if flash_busy = '0' then + flash_command<="100";--flash enable command + flash_go <= '1'; + + control_state <= DELAY; + if cmd_buffer = '0' then + control_nextstate <= READ1PAGE; + elsif cmd_buffer ='1' then + control_nextstate <= ERASEUFM; + end if; + end if; + + when ERASEUFM => + --erase complete UFM to prepare for new data + if flash_busy = '0' then + flash_command<="111";--erase UFM command + flash_go <= '1'; + control_state <= DELAY; + control_nextstate <= SETRAMADDRESS; + end if; + + when READ1PAGE => + --read one flashpage specified by input UFM_STARTPAGE + if flash_busy = '0' then + flash_command<="000";--command read one page + flash_go <='1'; + control_state <= DELAY; + control_nextstate <= SETRAMADDRESS; + end if; + + when READNEXTPAGE => + --read next UFM page + if flash_busy = '0' then + flash_command<="001";--command read one page + flash_go <='1'; + control_state <= DELAY; + control_nextstate <= SETRAMADDRESS; + end if; + + when SETRAMADDRESS => + --set address of byte in ram to be accessed in next state + if flash_busy = '0' then + ram_addr_i <= std_logic_vector(DATABYTE_COUNTER(3 downto 0)); + control_state <= DELAY; + if cmd_buffer = '0' then + control_nextstate <= COPYDATAOUT; + elsif cmd_buffer = '1' then + control_nextstate <= COPYDATATORAM; + end if; + end if; + + when COPYDATAOUT => + --data interface to UFM_control - + --copy out current byte, meaning making a proper handover since + --the ram output is directly connected to the output of UFM_control + BUS_READY_OUT <= '1'; + if BUS_READY_IN = '1' then + BUS_READY_OUT <= '0'; + control_state <= COPYDATAOUT2; + end if; + + when COPYDATAOUT2 => + if BUS_READY_IN = '0' then + DATABYTE_COUNTER <= DATABYTE_COUNTER + 1; + + if DATABYTE_COUNTER = no_databytes - 1 then + --data read out complete, go for IDLE (->DisableUFMaccess->IDLE) + control_state<=DisableUFMaccess; + elsif DATABYTE_COUNTER(3 downto 0) = "1111" then + --one UFM page complete -> read next one + control_state <= READNEXTPAGE; + else + --read out next byte from ram (respectively current flash page in ram) + control_state<=SETRAMADDRESS; + end if; + end if; + + when COPYDATATORAM => + --data interface to UFM_control - copy the current byte at input DATA_IN to ram + BUS_READY_OUT <= '1'; --tell outside that ready for new data + if BUS_READY_IN = '1' then + --when new data available + ram_data_in_buffer <= DATA_IN; --take data inside (input to buffer/ram) + BUS_READY_OUT <= '0'; --tell data has been taken + + control_state <= COPYDATATORAM2; + end if; + + when COPYDATATORAM2 => + if BUS_READY_IN = '0' then + --wait until outside understood that datatransfer complete + ram_write_i <= '1'; --tell THE_FLASH_RAM to take over byte + DATABYTE_COUNTER<= DATABYTE_COUNTER + 1; + + control_state <= DELAY; + if DATABYTE_COUNTER = to_unsigned(15,DATABYTE_COUNTER'length) then + --ram for first flashpage full -> copy data to first flashpage (specified by UFM_STARTPAGE) + control_nextstate <= WRITE1PAGE; + elsif DATABYTE_COUNTER(3 downto 0) = "1111" then + --ram filled for next flashpage -> copy data to next flashpage + control_nextstate <= WRITENEXTPAGE; + else + --go on filling ram with data + control_nextstate <= SETRAMADDRESS; + end if; + end if; + + when WRITE1PAGE => + --write one flash page specified by input UFM_STARTPAGE + if flash_busy = '0' then + flash_command<="010"; --command write one page + flash_go <='1'; + + control_state <= DELAY; + if DATABYTE_COUNTER = no_databytes then + control_nextstate <= DisableUFMaccess; + else + control_nextstate <= SETRAMADDRESS; + end if; + end if; + + when WRITENEXTPAGE => + --write next flash page + if flash_busy = '0' then + flash_command<="011";--command write next page + flash_go <='1'; + + control_state <= DELAY; + if DATABYTE_COUNTER = no_databytes then + control_nextstate <= DisableUFMaccess; + else + control_nextstate <= SETRAMADDRESS; + end if; + end if; + + when DisableUFMaccess => + --disable flash access + if flash_busy = '0' then + flash_command<="101"; + flash_go <='1'; + + control_state <= DELAY; + control_nextstate <= IDLE; + end if; + end case; + + if RESET = '1' or FLASH_ERROR = '1' then + --if RESET is asserted or flash reports error stop running statemachine and go to IDLE + control_nextstate <= IDLE; + end if; + +end process; + +end architecture; diff --git a/cores/flash.ipx b/cores/flash.ipx new file mode 100644 index 0000000..f076aa3 --- /dev/null +++ b/cores/flash.ipx @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/cores/flash.lpc b/cores/flash.lpc new file mode 100644 index 0000000..6413b1b --- /dev/null +++ b/cores/flash.lpc @@ -0,0 +1,90 @@ +[Device] +Family=machxo3lf +PartType=LCMXO3LF-2100E +PartName=LCMXO3LF-2100E-5UWG49CTR +SpeedGrade=5 +Package=WLCSP49 +OperatingCondition=COM +Status=S + +[IP] +VendorName=Lattice Semiconductor Corporation +CoreType=LPM +CoreStatus=Demo +CoreName=EFB +CoreRevision=1.2 +ModuleName=flash +SourceFormat=VHDL +ParameterFileVersion=1.0 +Date=09/29/2016 +Time=10:00:20 + +[Parameters] +Verilog=0 +VHDL=1 +EDIF=1 +Destination=Synplicity +Expression=BusA(0 to 7) +Order=Big Endian [MSB:LSB] +IO=0 +freq= +i2c1=0 +i2c1config=0 +i2c1_addr=7-Bit Addressing +i2c1_ce=0 +i2c1_freq=100 +i2c1_sa=10000 +i2c1_we=0 +i2c2=0 +i2c2_addr=7-Bit Addressing +i2c2_ce=0 +i2c2_freq=100 +i2c2_sa=10000 +i2c2_we=0 +ufm_addr=7-Bit Addressing +ufm_sa=10000 +pll=0 +pll_cnt=1 +spi=0 +spi_clkinv=0 +spi_cs=1 +spi_en=0 +spi_freq=1 +spi_lsb=0 +spi_mode=Slave +spi_ib=0 +spi_ph=0 +spi_hs=0 +spi_rxo=0 +spi_rxr=0 +spi_txo=0 +spi_txr=0 +spi_we=0 +static_tc=Static +tc=0 +tc_clkinv=Positive +tc_ctr=1 +tc_div=1 +tc_ipcap=0 +tc_mode=CTCM +tc_ocr=32767 +tc_oflow=1 +tc_o=TOGGLE +tc_opcomp=0 +tc_osc=0 +tc_sa_oflow=0 +tc_top=65535 +ufm=1 +wb_clk_freq=33.33 +ufm_usage=SHARED_EBR_TAG +ufm_ebr=629 +ufm_remain= +mem_size=10 +ufm_start= +ufm_init=0 +memfile= +ufm_dt=hex +wb=1 + +[Command] +cmd_line= -w -n flash -lang vhdl -synth synplify -bus_exp 7 -bb -type efb -arch xo3c00f -freq 33.33 -ufm -ufm_ebr 629 -mem_size 10 -ufm_0 -wb -dev 2100 diff --git a/cores/flash.vhd b/cores/flash.vhd new file mode 100644 index 0000000..c967b9e --- /dev/null +++ b/cores/flash.vhd @@ -0,0 +1,202 @@ +-- VHDL netlist generated by SCUBA Diamond (64-bit) 3.6.0.83.4 +-- Module Version: 1.2 +--/opt/lattice/diamond/3.6_x64/ispfpga/bin/lin64/scuba -w -n flash -lang vhdl -synth synplify -bus_exp 7 -bb -type efb -arch xo3c00f -freq 33.33 -ufm -ufm_ebr 629 -mem_size 10 -ufm_0 -wb -dev 2100 + +-- Thu Sep 29 10:00:20 2016 + +library IEEE; +use IEEE.std_logic_1164.all; +-- synopsys translate_off +library MACHXO3L; +use MACHXO3L.components.all; +-- synopsys translate_on + +entity flash is + port ( + wb_clk_i: in std_logic; + wb_rst_i: in std_logic; + wb_cyc_i: in std_logic; + wb_stb_i: in std_logic; + wb_we_i: in std_logic; + wb_adr_i: in std_logic_vector(7 downto 0); + wb_dat_i: in std_logic_vector(7 downto 0); + wb_dat_o: out std_logic_vector(7 downto 0); + wb_ack_o: out std_logic; + wbc_ufm_irq: out std_logic); +end flash; + +architecture Structure of flash is + + -- internal signal declarations + signal scuba_vhi: std_logic; + signal scuba_vlo: std_logic; + + -- local component declarations + component VHI + port (Z: out std_logic); + end component; + component VLO + port (Z: out std_logic); + end component; + component EFB + generic (EFB_I2C1 : in String; EFB_I2C2 : in String; + EFB_SPI : in String; EFB_TC : in String; + EFB_TC_PORTMODE : in String; EFB_UFM : in String; + EFB_WB_CLK_FREQ : in String; DEV_DENSITY : in String; + UFM_INIT_PAGES : in Integer; + UFM_INIT_START_PAGE : in Integer; + UFM_INIT_ALL_ZEROS : in String; + UFM_INIT_FILE_NAME : in String; + UFM_INIT_FILE_FORMAT : in String; + I2C1_ADDRESSING : in String; I2C2_ADDRESSING : in String; + I2C1_SLAVE_ADDR : in String; I2C2_SLAVE_ADDR : in String; + I2C1_BUS_PERF : in String; I2C2_BUS_PERF : in String; + I2C1_CLK_DIVIDER : in Integer; + I2C2_CLK_DIVIDER : in Integer; I2C1_GEN_CALL : in String; + I2C2_GEN_CALL : in String; I2C1_WAKEUP : in String; + I2C2_WAKEUP : in String; SPI_MODE : in String; + SPI_CLK_DIVIDER : in Integer; SPI_LSB_FIRST : in String; + SPI_CLK_INV : in String; SPI_PHASE_ADJ : in String; + SPI_SLAVE_HANDSHAKE : in String; + SPI_INTR_TXRDY : in String; SPI_INTR_RXRDY : in String; + SPI_INTR_TXOVR : in String; SPI_INTR_RXOVR : in String; + SPI_WAKEUP : in String; TC_MODE : in String; + TC_SCLK_SEL : in String; TC_CCLK_SEL : in Integer; + GSR : in String; TC_TOP_SET : in Integer; + TC_OCR_SET : in Integer; TC_OC_MODE : in String; + TC_RESETN : in String; TC_TOP_SEL : in String; + TC_OV_INT : in String; TC_OCR_INT : in String; + TC_ICR_INT : in String; TC_OVERFLOW : in String; + TC_ICAPTURE : in String); + port (WBCLKI: in std_logic; WBRSTI: in std_logic; + WBCYCI: in std_logic; WBSTBI: in std_logic; + WBWEI: in std_logic; WBADRI7: in std_logic; + WBADRI6: in std_logic; WBADRI5: in std_logic; + WBADRI4: in std_logic; WBADRI3: in std_logic; + WBADRI2: in std_logic; WBADRI1: in std_logic; + WBADRI0: in std_logic; WBDATI7: in std_logic; + WBDATI6: in std_logic; WBDATI5: in std_logic; + WBDATI4: in std_logic; WBDATI3: in std_logic; + WBDATI2: in std_logic; WBDATI1: in std_logic; + WBDATI0: in std_logic; PLL0DATI7: in std_logic; + PLL0DATI6: in std_logic; PLL0DATI5: in std_logic; + PLL0DATI4: in std_logic; PLL0DATI3: in std_logic; + PLL0DATI2: in std_logic; PLL0DATI1: in std_logic; + PLL0DATI0: in std_logic; PLL0ACKI: in std_logic; + PLL1DATI7: in std_logic; PLL1DATI6: in std_logic; + PLL1DATI5: in std_logic; PLL1DATI4: in std_logic; + PLL1DATI3: in std_logic; PLL1DATI2: in std_logic; + PLL1DATI1: in std_logic; PLL1DATI0: in std_logic; + PLL1ACKI: in std_logic; I2C1SCLI: in std_logic; + I2C1SDAI: in std_logic; I2C2SCLI: in std_logic; + I2C2SDAI: in std_logic; SPISCKI: in std_logic; + SPIMISOI: in std_logic; SPIMOSII: in std_logic; + SPISCSN: in std_logic; TCCLKI: in std_logic; + TCRSTN: in std_logic; TCIC: in std_logic; + UFMSN: in std_logic; WBDATO7: out std_logic; + WBDATO6: out std_logic; WBDATO5: out std_logic; + WBDATO4: out std_logic; WBDATO3: out std_logic; + WBDATO2: out std_logic; WBDATO1: out std_logic; + WBDATO0: out std_logic; WBACKO: out std_logic; + PLLCLKO: out std_logic; PLLRSTO: out std_logic; + PLL0STBO: out std_logic; PLL1STBO: out std_logic; + PLLWEO: out std_logic; PLLADRO4: out std_logic; + PLLADRO3: out std_logic; PLLADRO2: out std_logic; + PLLADRO1: out std_logic; PLLADRO0: out std_logic; + PLLDATO7: out std_logic; PLLDATO6: out std_logic; + PLLDATO5: out std_logic; PLLDATO4: out std_logic; + PLLDATO3: out std_logic; PLLDATO2: out std_logic; + PLLDATO1: out std_logic; PLLDATO0: out std_logic; + I2C1SCLO: out std_logic; I2C1SCLOEN: out std_logic; + I2C1SDAO: out std_logic; I2C1SDAOEN: out std_logic; + I2C2SCLO: out std_logic; I2C2SCLOEN: out std_logic; + I2C2SDAO: out std_logic; I2C2SDAOEN: out std_logic; + I2C1IRQO: out std_logic; I2C2IRQO: out std_logic; + SPISCKO: out std_logic; SPISCKEN: out std_logic; + SPIMISOO: out std_logic; SPIMISOEN: out std_logic; + SPIMOSIO: out std_logic; SPIMOSIEN: out std_logic; + SPIMCSN7: out std_logic; SPIMCSN6: out std_logic; + SPIMCSN5: out std_logic; SPIMCSN4: out std_logic; + SPIMCSN3: out std_logic; SPIMCSN2: out std_logic; + SPIMCSN1: out std_logic; SPIMCSN0: out std_logic; + SPICSNEN: out std_logic; SPIIRQO: out std_logic; + TCINT: out std_logic; TCOC: out std_logic; + WBCUFMIRQ: out std_logic; CFGWAKE: out std_logic; + CFGSTDBY: out std_logic); + end component; + attribute NGD_DRC_MASK : integer; + attribute NGD_DRC_MASK of Structure : architecture is 1; + +begin + -- component instantiation statements + scuba_vhi_inst: VHI + port map (Z=>scuba_vhi); + + scuba_vlo_inst: VLO + port map (Z=>scuba_vlo); + + EFBInst_0: EFB + generic map (UFM_INIT_FILE_FORMAT=> "HEX", UFM_INIT_FILE_NAME=> "NONE", + UFM_INIT_ALL_ZEROS=> "ENABLED", UFM_INIT_START_PAGE=> 0, + UFM_INIT_PAGES=> 0, DEV_DENSITY=> "2100L", EFB_UFM=> "ENABLED", + TC_ICAPTURE=> "DISABLED", TC_OVERFLOW=> "DISABLED", TC_ICR_INT=> "OFF", + TC_OCR_INT=> "OFF", TC_OV_INT=> "OFF", TC_TOP_SEL=> "OFF", + TC_RESETN=> "ENABLED", TC_OC_MODE=> "TOGGLE", TC_OCR_SET=> 32767, + TC_TOP_SET=> 65535, GSR=> "ENABLED", TC_CCLK_SEL=> 1, TC_MODE=> "CTCM", + TC_SCLK_SEL=> "PCLOCK", EFB_TC_PORTMODE=> "WB", EFB_TC=> "DISABLED", + SPI_WAKEUP=> "DISABLED", SPI_INTR_RXOVR=> "DISABLED", + SPI_INTR_TXOVR=> "DISABLED", SPI_INTR_RXRDY=> "DISABLED", + SPI_INTR_TXRDY=> "DISABLED", SPI_SLAVE_HANDSHAKE=> "DISABLED", + SPI_PHASE_ADJ=> "DISABLED", SPI_CLK_INV=> "DISABLED", + SPI_LSB_FIRST=> "DISABLED", SPI_CLK_DIVIDER=> 1, SPI_MODE=> "MASTER", + EFB_SPI=> "DISABLED", I2C2_WAKEUP=> "DISABLED", I2C2_GEN_CALL=> "DISABLED", + I2C2_CLK_DIVIDER=> 1, I2C2_BUS_PERF=> "100kHz", I2C2_SLAVE_ADDR=> "0b1000010", + I2C2_ADDRESSING=> "7BIT", EFB_I2C2=> "DISABLED", I2C1_WAKEUP=> "DISABLED", + I2C1_GEN_CALL=> "DISABLED", I2C1_CLK_DIVIDER=> 1, I2C1_BUS_PERF=> "100kHz", + I2C1_SLAVE_ADDR=> "0b1000001", I2C1_ADDRESSING=> "7BIT", + EFB_I2C1=> "DISABLED", EFB_WB_CLK_FREQ=> "33.3") + port map (WBCLKI=>wb_clk_i, WBRSTI=>wb_rst_i, WBCYCI=>wb_cyc_i, + WBSTBI=>wb_stb_i, WBWEI=>wb_we_i, WBADRI7=>wb_adr_i(7), + WBADRI6=>wb_adr_i(6), WBADRI5=>wb_adr_i(5), + WBADRI4=>wb_adr_i(4), WBADRI3=>wb_adr_i(3), + WBADRI2=>wb_adr_i(2), WBADRI1=>wb_adr_i(1), + WBADRI0=>wb_adr_i(0), WBDATI7=>wb_dat_i(7), + WBDATI6=>wb_dat_i(6), WBDATI5=>wb_dat_i(5), + WBDATI4=>wb_dat_i(4), WBDATI3=>wb_dat_i(3), + WBDATI2=>wb_dat_i(2), WBDATI1=>wb_dat_i(1), + WBDATI0=>wb_dat_i(0), PLL0DATI7=>scuba_vlo, + PLL0DATI6=>scuba_vlo, PLL0DATI5=>scuba_vlo, + PLL0DATI4=>scuba_vlo, PLL0DATI3=>scuba_vlo, + PLL0DATI2=>scuba_vlo, PLL0DATI1=>scuba_vlo, + PLL0DATI0=>scuba_vlo, PLL0ACKI=>scuba_vlo, + PLL1DATI7=>scuba_vlo, PLL1DATI6=>scuba_vlo, + PLL1DATI5=>scuba_vlo, PLL1DATI4=>scuba_vlo, + PLL1DATI3=>scuba_vlo, PLL1DATI2=>scuba_vlo, + PLL1DATI1=>scuba_vlo, PLL1DATI0=>scuba_vlo, + PLL1ACKI=>scuba_vlo, I2C1SCLI=>scuba_vlo, + I2C1SDAI=>scuba_vlo, I2C2SCLI=>scuba_vlo, + I2C2SDAI=>scuba_vlo, SPISCKI=>scuba_vlo, SPIMISOI=>scuba_vlo, + SPIMOSII=>scuba_vlo, SPISCSN=>scuba_vlo, TCCLKI=>scuba_vlo, + TCRSTN=>scuba_vlo, TCIC=>scuba_vlo, UFMSN=>scuba_vhi, + WBDATO7=>wb_dat_o(7), WBDATO6=>wb_dat_o(6), + WBDATO5=>wb_dat_o(5), WBDATO4=>wb_dat_o(4), + WBDATO3=>wb_dat_o(3), WBDATO2=>wb_dat_o(2), + WBDATO1=>wb_dat_o(1), WBDATO0=>wb_dat_o(0), WBACKO=>wb_ack_o, + PLLCLKO=>open, PLLRSTO=>open, PLL0STBO=>open, PLL1STBO=>open, + PLLWEO=>open, PLLADRO4=>open, PLLADRO3=>open, PLLADRO2=>open, + PLLADRO1=>open, PLLADRO0=>open, PLLDATO7=>open, + PLLDATO6=>open, PLLDATO5=>open, PLLDATO4=>open, + PLLDATO3=>open, PLLDATO2=>open, PLLDATO1=>open, + PLLDATO0=>open, I2C1SCLO=>open, I2C1SCLOEN=>open, + I2C1SDAO=>open, I2C1SDAOEN=>open, I2C2SCLO=>open, + I2C2SCLOEN=>open, I2C2SDAO=>open, I2C2SDAOEN=>open, + I2C1IRQO=>open, I2C2IRQO=>open, SPISCKO=>open, + SPISCKEN=>open, SPIMISOO=>open, SPIMISOEN=>open, + SPIMOSIO=>open, SPIMOSIEN=>open, SPIMCSN7=>open, + SPIMCSN6=>open, SPIMCSN5=>open, SPIMCSN4=>open, + SPIMCSN3=>open, SPIMCSN2=>open, SPIMCSN1=>open, + SPIMCSN0=>open, SPICSNEN=>open, SPIIRQO=>open, TCINT=>open, + TCOC=>open, WBCUFMIRQ=>wbc_ufm_irq, CFGWAKE=>open, + CFGSTDBY=>open); + +end Structure; diff --git a/default/diamond/LogicBox.ldf b/default/diamond/LogicBox.ldf index f7226b8..b945722 100644 --- a/default/diamond/LogicBox.ldf +++ b/default/diamond/LogicBox.ldf @@ -2,7 +2,7 @@ - + @@ -12,9 +12,6 @@ - - - @@ -24,6 +21,21 @@ + + + + + + + + + + + + + + + diff --git a/default/logicbox.vhd b/default/logicbox.vhd index b822e63..92e9d4f 100644 --- a/default/logicbox.vhd +++ b/default/logicbox.vhd @@ -6,7 +6,7 @@ library machxo3lf; use machxo3lf.all; library work; -use work.trb_net_std.all; +use work.all;--trb_net_std.all; entity logicbox is port( @@ -29,7 +29,7 @@ entity logicbox is end entity; architecture arch of logicbox is - signal clk_i, clk_osc, clk_33 : std_logic; + signal clk_i, clk_osc, clk_33,clk_266 : std_logic; signal led_i : std_logic_vector(3 downto 0); signal timer_i : unsigned(31 downto 0) := (others => '0'); signal config : std_logic_vector(3 downto 0); @@ -39,6 +39,8 @@ architecture arch of logicbox is signal led_timer : led_timer_t; signal led_state : std_logic_vector(3 downto 0); + --UART + ------------------------------------- signal uart_rx_data : std_logic_vector(31 downto 0); signal uart_tx_data : std_logic_vector(31 downto 0); signal uart_addr : std_logic_vector(7 downto 0); @@ -52,33 +54,32 @@ architecture arch of logicbox is signal input_reg_0, input_reg_1, input_reg_2 : std_logic_vector(3 downto 0); signal edge_rising, edge_falling : std_logic_vector(3 downto 0); - signal pulser : std_logic; signal reg : std_logic_vector(31 downto 0); signal last_config : std_logic_vector(3 downto 0); - + signal sed_error : std_logic; signal sed_debug : std_logic_vector(31 downto 0); signal controlsed_i : std_logic_vector(3 downto 0); + --PULSER + ------------------------------------- + signal pulser : std_logic; + signal pulser_counter : unsigned(27 downto 0) := (others => '0'); + signal pulser_periodlength : unsigned(27 downto 0) := x"0000002"; + signal pulser_pulslength : unsigned(27 downto 0) := x"0000001"; + signal pulser_periodlength_buffer : unsigned(27 downto 0); + signal pulser_pulslength_buffer : unsigned(27 downto 0); - signal ram_write_i : std_logic; - signal ram_data_i: std_logic_vector(7 downto 0); - signal ram_data_o: std_logic_vector(7 downto 0); - signal ram_addr_i: std_logic_vector(3 downto 0); - - signal flashram_addr_i : std_logic_vector(3 downto 0); - signal flashram_cen_i : std_logic; - signal flashram_reset : std_logic; - signal flashram_write_i: std_logic; - signal flashram_data_i : std_logic_vector(7 downto 0); - signal flashram_data_o : std_logic_vector(7 downto 0); - - signal flash_command : std_logic_vector(2 downto 0); - signal flash_page : std_logic_vector(12 downto 0); - signal flash_go : std_logic; - signal flash_busy : std_logic; - signal flash_err : std_logic; - + --UFM + ------------------------------------- + signal ufm_cmd : std_logic := '0'; --CMD=0 => Read; CMD=1 => Write + signal ufm_go : std_logic := '1'; --load default values to registers from UFM at startup + signal ufm_data_in : std_logic_vector(7 downto 0); --directly connected to flashram DataInA + signal ufm_data_out : std_logic_vector(7 downto 0); --directly connected to flashram QB + signal ufm_databyte_counter : unsigned(14 downto 0); + signal ufm_bus_ready_out : std_logic; + signal ufm_bus_ready_in : std_logic; + signal ufm_busy : std_logic; component OSCH generic (NOM_FREQ: string := "133.00"); @@ -89,29 +90,9 @@ architecture arch of logicbox is ); end component; - component UFM_WB - port( - clk_i : in std_logic; - rst_n : in std_logic; - cmd : in std_logic_vector(2 downto 0); - ufm_page : in std_logic_vector(12 downto 0); - GO : in std_logic; - BUSY : out std_logic; - ERR : out std_logic; - mem_clk : out std_logic; - mem_we : out std_logic; - mem_ce : out std_logic; - mem_addr : out std_logic_vector(3 downto 0); - mem_wr_data : out std_logic_vector(7 downto 0); - mem_rd_data : in std_logic_vector(7 downto 0) - ); - end component; - + begin - - - --------------------------------------------------------------------------- -- I/O Logic --------------------------------------------------------------------------- @@ -188,11 +169,21 @@ process(INPUT,config, STATUSI) --------------------------------------------------------------------------- PROC_PULSER : process begin wait until rising_edge(clk_i); - if timer_i(13 downto 0) = "00"&x"000" then + pulser_counter <= pulser_counter + 1; + + if pulser_counter = x"0000000" then pulser <= '1'; - elsif timer_i(13 downto 0) = "00"&x"008" then + pulser_pulslength_buffer <= pulser_pulslength; + pulser_periodlength_buffer <= pulser_periodlength; + end if; + + if pulser_counter = pulser_pulslength_buffer then pulser <= '0'; - end if; + end if; + + if pulser_counter = pulser_periodlength_buffer then + pulser_counter <= (others => '0'); + end if; end process; --------------------------------------------------------------------------- @@ -223,7 +214,6 @@ process(INPUT,config, STATUSI) end loop; end process; - --------------------------------------------------------------------------- -- Clock --------------------------------------------------------------------------- @@ -240,20 +230,16 @@ THE_PLL : entity work.pll_in133_out33_133_266 CLKI => clk_osc, CLKOP => clk_i, --133 CLKOS => clk_33, --33 - CLKOS2=> open --266 + CLKOS2=> clk_266 --266 ); - timer_i <= timer_i + 1 when rising_edge(clk_i); - --------------------------------------------------------------------------- -- Read configuration switch --------------------------------------------------------------------------- process begin wait until rising_edge(clk_i); - - if timer_i(27 downto 10) = 0 then led_highz <= '1'; last_config <= config; @@ -273,10 +259,10 @@ LED <= led_i when led_highz = '0' else "ZZZZ"; --------------------------------------------------------------------------- THE_UART : entity work.uart_sctrl generic map( - CLOCK_SPEED => 133000000 + CLOCK_SPEED => 33250000 ) port map( - CLK => clk_i, + CLK => clk_33, RESET => '0', UART_RX => TX_IN, UART_TX => RX_OUT, @@ -291,82 +277,147 @@ THE_UART : entity work.uart_sctrl DEBUG => open ); +--------------------------------------------------------------------------- +-- UFM (FLASH) CONTROLLER +--------------------------------------------------------------------------- +THE_UFM : entity UFM_control + generic map( + NO_DATAPAGES => 1, + UFM_STARTPAGE => "00"&x"00" + ) + port map( + CLK => clk_33, + CMD => ufm_cmd, --CMD=0 => Read; CMD=1 => Write + GO => ufm_go, + BUSY => ufm_busy, + RESET => '0', + + DATA_IN => ufm_data_in, + DATA_OUT => ufm_data_out, + DATABYTE_COUNTER => ufm_databyte_counter, + BUS_READY_IN => ufm_bus_ready_in, + BUS_READY_OUT => ufm_bus_ready_out, + + FLASH_ERROR => open--ufmflasherror + ); + +--------------------------------------------------------------------------- +-- READ/WRITE REGISTERS VIA UART/FLASH +--------------------------------------------------------------------------- PROC_REGS : process begin - wait until rising_edge(clk_i); + wait until rising_edge(clk_33); + + --register <=> UART datatransfer + ------------------------------------------------------------------- bus_ready <= '0'; + ufm_go <= '0'; --for operating UFM_control + if bus_read = '1' then + --send out data from registers over RS232 bus_ready <= '1'; case uart_addr is when x"00" => uart_tx_data <= x"0000000" & config; when x"10" => uart_tx_data <= reg; when x"ee" => uart_tx_data <= sed_debug; + + when x"20" => uart_tx_data <= x"0" & std_logic_vector(pulser_periodlength); + when x"21" => uart_tx_data <= x"0" & std_logic_vector(pulser_pulslength); + + when others =>null; end case; + elsif bus_write = '1' then + --write registers with data from received from RS232 case uart_addr is + when x"02" => if uart_rx_data = x"00000000" and ufm_busy = '0' then + --initiate load from UFM + ufm_cmd <= '0'; + ufm_go <= '1'; + elsif uart_rx_data = x"FFFFFFFF" and ufm_busy = '0' then + --initiate write to UFM + ufm_cmd <= '1'; + ufm_go <= '1'; + end if; + when x"10" => reg <= uart_rx_data; - when x"ee" => controlsed_i <= uart_rx_data(3 downto 0); + + when x"20" => if uart_rx_data = x"00000000" or uart_rx_data = x"00000001" then + pulser_periodlength <= x"0000001"; + else + pulser_periodlength <= unsigned(uart_rx_data(27 downto 0)) - 1; + end if; + + when x"21" => pulser_pulslength <= uart_rx_data(27 downto 0); + + when x"ee" => controlsed_i <= uart_rx_data(3 downto 0); + + when others => null; end case; end if; + + --register <=> UFM datatransfer + ------------------------------------------------------------------- + ufm_bus_ready_in <= '0'; + + if ufm_cmd = '0' and ufm_bus_ready_out = '1' then + --copy data from UFM to registers + ufm_bus_ready_in <= '1'; + case to_integer(ufm_databyte_counter) is + when 0 => reg(7 downto 0) <= ufm_data_out; + when 1 => reg(15 downto 8) <= ufm_data_out; + when 2 => reg(23 downto 16) <= ufm_data_out; + when 3 => reg(31 downto 24) <= ufm_data_out; + + when 4 => pulser_periodlength(7 downto 0) <= ufm_data_out; + when 5 => pulser_periodlength(15 downto 8) <= ufm_data_out; + when 6 => pulser_periodlength(23 downto 16) <= ufm_data_out; + when 7 => pulser_periodlength(27 downto 24) <= ufm_data_out(3 downto 0); + + when 8 => pulser_pulslength(7 downto 0) <= ufm_data_out; + when 9 => pulser_pulslength(15 downto 8) <= ufm_data_out; + when 10 => pulser_pulslength(23 downto 16) <= ufm_data_out; + when 11 => pulser_pulslength(27 downto 24) <= ufm_data_out(3 downto 0); + + when others =>null; + end case; + + elsif ufm_cmd = '1' and ufm_bus_ready_out = '1' then + --save data from registers to UFM + ufm_bus_ready_in <= '1'; + case to_integer(ufm_databyte_counter) is + when 0 => ufm_data_in <= reg(7 downto 0); + when 1 => ufm_data_in <= reg(15 downto 8); + when 2 => ufm_data_in <= reg(23 downto 16); + when 3 => ufm_data_in <= reg(31 downto 24); + + when 4 => ufm_data_in <= pulser_periodlength(7 downto 0); + when 5 => ufm_data_in <= pulser_periodlength(15 downto 8); + when 6 => ufm_data_in <= pulser_periodlength(23 downto 16); + when 7 => ufm_data_in <= x"0" & std_logic_vector(pulser_periodlength(27 downto 24)); + + when 8 => ufm_data_in <= pulser_pulslength(7 downto 0); + when 9 => ufm_data_in <= pulser_pulslength(15 downto 8); + when 10 => ufm_data_in <= pulser_pulslength(23 downto 16); + when 11 => ufm_data_in <= x"0" & std_logic_vector(pulser_pulslength(27 downto 24)); + + when others =>null; + end case; + + end if; end process; -THE_SED : entity work.sedcheck - port map( - CLK => clk_i, - ERROR_OUT => sed_error, - - CONTROL_IN => controlsed_i, - DEBUG => sed_debug - ); - - - - ---------------------------------------------------------------------------- --- Flash Controller ---------------------------------------------------------------------------- - -THE_FLASH_RAM : entity work.flashram - port map( - DataInA => ram_data_i, - AddressA => ram_addr_i, - ClockA => clk_i, - ClockEnA => '1', - WrA => ram_write_i, - ResetA => '0', - QA => ram_data_o, - - DataInB => flashram_data_i, - AddressB => flashram_addr_i, - ClockB => clk_33, - ClockEnB => flashram_cen_i, - WrB => flashram_write_i, - ResetB => flashram_reset, - QB => flashram_data_o - ); - - - -THE_FLASH : UFM_WB - port map( - clk_i => clk_33, - rst_n => '1', - cmd => flash_command, - ufm_page => flash_page, - GO => flash_go, - BUSY => flash_busy, - ERR => flash_err, - mem_clk => open, - mem_we => flashram_write_i, - mem_ce => flashram_cen_i, - mem_addr => flashram_addr_i, - mem_wr_data => flashram_data_i, - mem_rd_data => flashram_data_o - ); - +-- THE_SED : entity work.sedcheck +-- port map( +-- CLK => clk_i, +-- ERROR_OUT => sed_error, +-- +-- CONTROL_IN => controlsed_i, +-- DEBUG => sed_debug +-- ); end architecture; - \ No newline at end of file + diff --git a/docu/main.pdf b/docu/main.pdf new file mode 100644 index 0000000000000000000000000000000000000000..8de3b3eeb32c8cf440c3d52d145e9bc17ce21b63 GIT binary patch literal 104824 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 WZxy4?