基于FPGA的SRAM设计

一、不利用FPGA内部存储单元,只利用VerilogHDL硬件描述语言来设计。

分为两个部分,SRAM内核,SRAM接口。SRAM接口利用三态门使数据口具有双向(输入\输出)功能。RTL结构如下:

RTL

altera_reports

SRAM内核代码:

 

SRAM接口代码:

SRAM顶层代码:

 

modelsim仿真程序:

用modelsim仿真如下:

modelsim

二、利用VerilogHDL,调用FPGA内部存储单元

altera 内部存储单元需要时钟来驱动,但是异步sram是没有时钟的,只需把时钟接在锁相环上,利用晶振来驱动即可。sram顶层bdf图如下所示:

sram2

altera_reports2

sram内核代码:

sram接口代码:

modelsim仿真程序:

modelsim仿真结果:

(将顶层文件生成HDL语言文件后,在工程中移除bdf文件,并添加生成的HDL文件后才可仿真)

modelsim2

利用ARM测试:

综合后,连接上LPC1788 EMC(外部存储器控制器)接口上,经过测试可以正常读写。

嵌入式格式化输出

在C语言中,一般用printf进行格式化输出。但是在ARM使用标准C库时,printf一般用于半主机模式(semihosting)的输出。可以对printf进行重定向,但是要求使用microlib。在使用microlib时,利用printf进行输出,会优先调用用户自定义的函数fputc,所以对fputc进行重写既可以完成printf的重定向。在标准C库下,如果取消半主机模式,也可以通过定义fputc实现对printf的重定向。

除此之外,还可以自己编写格式化输出函数,实现格式化的输出。

一、使用microlib,对printf重定向

只需重写fputc,并勾选microlib即可。

二、使用标准C库,对printf进行重定向

取消半主机模式

重写fputc函数

 

三、自己编写格式化输出函数

 

自己编写格式化输出,另外一种简单的办法

基于uC/OS-II与LwIP的WEB服务器搭建

拿到新唐公司送的NUC472开发板已经有一段时间了,主要学习了一下以太网。毕业课题,准备找工作。。。时间有限,对NUC472开发板就到处为止吧。

以前总是想学习一下以太网,但是一直没有付诸行动。新唐公司的NUC472开发板恰好带有以太网接口,并且外置了以太网PHY,终于下定决心学习一下以太网。

先是了解了下以太网的几种基本的协议,以及大多芯片上采用的MII和RMII接口,最后做了UDP和TCP通信实验,最后搭建了动态的http服务器。

自己在NUC472上编写了服务器端的SSI和CGI。CGI用于处理网页提交的GET方法,SSI用于服务器端对网页的处理,主页是把设置的标签替换成所要在web页面上显示的数据。

web目录结构如下:.

                                ./index.shtml

                                ./404.html

                                ./cgi_respond.shtml

                                ./image/mytown.jpg

                                ./image/favicon.ico

页面主要有以下特点:

  • 页面无刷新,动态获取服务器数据,动态显示uC/OS-II系统时钟及LED闪烁状态
  • 页面无刷新,设置并控制NUC472开发板LED闪烁周期

http1http2

nuc472