SOC设计方法与实现实验报告.doc

上传人:b****1 文档编号:134395 上传时间:2022-10-04 格式:DOC 页数:27 大小:489.50KB
下载 相关 举报
SOC设计方法与实现实验报告.doc_第1页
第1页 / 共27页
SOC设计方法与实现实验报告.doc_第2页
第2页 / 共27页
SOC设计方法与实现实验报告.doc_第3页
第3页 / 共27页
SOC设计方法与实现实验报告.doc_第4页
第4页 / 共27页
SOC设计方法与实现实验报告.doc_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

SOC设计方法与实现实验报告.doc

《SOC设计方法与实现实验报告.doc》由会员分享,可在线阅读,更多相关《SOC设计方法与实现实验报告.doc(27页珍藏版)》请在冰豆网上搜索。

SOC设计方法与实现实验报告.doc

《SOC设计方法与实现》实验报告

马亮201111857

刘家明201111856

1实验时间:

2011年11月19日—2011年12月15日

2实验目的

完成一个数字系统的VerilogHDL描述和利用EDA工具的VerilogHDL仿真综合环境对这一描述进行仿真并综合,完整地从事一个数字VLSI系统的设计过程,理解和掌握现代集成电路的设计流程、硬件描述语言综合理论等高层次设计方法以及它和物理实现之间的关系,巩固在理论课阶段学习的相关知识。

3实验平台

代码输入工具:

QuartusII

功能仿真:

ModelSimSE6.2b

综合工具:

DC,SynplifyPro8.6.2

4实验内容

设计一个数字信号处理器系统,其功能为:

在8位微控制器Intel8051的控制下对输入信号进行数字滤波处理并根据输入数据的大小产生一组控制液晶板的显示。

系统框图如下:

Intel8051是微处理器;TH99CHLS是要实现的系统。

Display是一个液晶显示板。

它包括三个显示区:

一个时间显示区,一个数字显示区和一个由16个小方块组成的信号幅度显示区。

显示面板为共阴极驱动,接高电平时对应的面板显示,接低时面板消失。

其结构见下图所示。

5:

系统简介和对应的模块划分

5.1:

系统的整体工作过程:

(1)在外部信号PEbar的控制下,芯片从端口in读入一个八位数据。

(2)在

(1)中输入的数据与微处理器给出的另一个八位数据进行按位“与”操作。

(3)在

(2)中处理过的数据经数字滤波后从端口out输出。

(4)TH99CHLS内部产生一组时间信号,包括时和分,其格式为:

(hh:

mm)。

这组时间信号的初值由微处理器给出,微处理器可以随时对时间信号进行修改。

(5)送往液晶显示板的信号有三组:

a.(4)中产生的时间信号,经七段译码后从端口hour和minute送出;

b.(3)中经数字滤波的信号,在转换成十进制并做七段译码后,百位经端口d00,十位经端口d10,个位经端口d01送出;

c.(3)中经数字滤波的信号,在经过压缩后通过端口ap送出。

5.2:

数字滤波器

数字滤波器的转移函数为:

滤波器的系数B0,B1,...,B6均由微处理器给出。

微处理器可以根据需要修改这些系数。

5.2:

系统模块说明和代码说明:

根据功能分析,将整个系统分为8个模块。

各个模块对应的源文件和功能描述如下表所示。

模块名称

对应源文件

功能说明

decoder

decoder.v

将四位二进制译码为LED显示。

输入4bit,输出为7bit直接驱动显示装置,为组合逻辑。

H2D

H2D.v

进行16进制到十进制的转换。

输入为8bit无符号数,输出为百,十,个位数字(其中每个数字4bit位宽),同样为组合逻辑

decoder_4X16

decoder_4X16

4-16译码器,主要是将经过y=sqrt(x)压缩后的数据送至显示设备。

输入4bit,输出16bit,组合逻辑。

sqrt_lut

sqrt_lut.v

主要实现y=sqrt(x)的运算。

主要是通过比较和查找表方式实现。

输入8bit,输出4bit。

时序逻辑,一个时钟周期。

mul8b_shiftadd_fsm

mul8b_shiftadd_fsm.v

乘法器设计。

通过移位加的方式实现。

内部通过状态机实现。

完成一次乘法需要8个时钟周期

timer_clk

timer_clk.v

时间时钟模块,主要是根据系统时钟计算秒。

通过计数器级联的方式实现。

filter

filter.v

这是整个系统比较核心的部分。

主要实现滤波器的设计和与微处理器的接口时序设计。

接口需要三态控制,并且要注意读写信号的控制,滤波器采用并行设计,用面积换取速度。

TH99CHLS

TH99CHLS.v

顶层元件例化。

主要是将上述各个模块进行组合。

整个功能框图如下:

6:

代码功能测试

下面是测试用的模块介绍,模拟TH99CHLS外围的单片机、控制信号和数据输入等:

模块名称

对应的源文件

功能说明

osc_rst

osc_rst.v

产生时钟频率和复位信号

fir_tb

fir_tb.v

滤波器数据的输入

wr_rd

wr_rd.v

单片机WR,RD信号的模拟

mcu

mcu.v

主要是模拟单片机对TH99CHLS芯片的控制,包括寄存器的读入与读出等一系列操作

top_test

top_test.v

顶层测试文件,主要是进行元件例化

ModelSimSE功能仿真结果波形图如下:

第一张图为前0-7us,第二张图为7us-15us.详细图形见source中的1.bmp和2.bmp.也可以查看其下的vsim.wlf(需要安装modelsim)。

此图为对TH99CHLS芯片内部b0-b6(滤波器系数)寄存器的操作和对mini,hour寄存器初始化的操作仿真结果。

7:

综合结果及分析

Synplify综合结果如下:

DC综合结果如下:

8:

所占用的资源和数据通道分析

该系统所占用的资源如下:

在滤波器设计中,并没有采用乘法器的复用,而是采用了多个乘法器的复制,牺牲面积来换取速读的提高。

综合后的频率能够达到50MHz。

滤波器的数据通道如下:

(用多个乘法器)

9:

VerilogHDL代码

///////////////////////////////////////////////////////////////////////////////////

`timescale1ns/10ps

moduletop_test();

wireclk,rst_n;

wire[7:

0]abus;

wireale,rbar_n,wbar_n,cs_n;

wirepebar_n;

wire[7:

0]fir_in;

wire[7:

0]dbus_xio;

wire[13:

0]hour,mini;

wire[20:

0]fir_out;

wire[15:

0]fir_out_sqrt;

wiresend_data_en;

fir_tbUfir_tb(send_data_en,pebar_n,fir_in);

osc_rstUost_rst(clk,rst_n);

TH99CHLSUTH99(

dbus_xio,

abus,

rbar_n,

wbar_n,

ale,

pebar_n,

fir_in,

cs_n,

rst_n,

clk,

//outputports

fir_out,

fir_out_sqrt,

hour,

mini

);

mcuUmcu(

.dbus_xio(dbus_xio),

.abus(abus),

.rbar_n(rbar_n),

.wbar_n(wbar_n),

.ale(ale),

.cs_n(cs_n),

.send_data_en(send_data_en)

);

endmodule

//////////////////////////////////////////////////////////////////

moduledecoder(

//input

hex,

//output

led

);

input[3:

0]hex;

outputreg[6:

0]led;

always@(hex)begin

case(hex)

4'b0000:

led=7'b011_1111;//0

4'b0001:

led=7'b001_1000;//1

4'b0010:

led=7'b111_0110;//2

4'b0011:

led=7'b111_1100;//3

4'b0100:

led=7'b101_1001;//4

4'b0101:

led=7'b110_1101;//5

4'b0110:

led=7'b110_1111;//6

4'b0111:

led=7'b011_1000;//7

4'b1000:

led=7'b111_1111;//8

4'b1001:

led=7'b111_1101;//9

default:

led=7'b000_0000;//null

endcase

end

endmodule

////////////////////////////////////////////////////////////////////

moduleTH99CHLS(

//input

dbus_xio,

abus,

rbar_n,

wbar_n,

ale,

pebar_n,

fir_in,

cs_n,

rst_n,

clk,

//outputports

fir_out,

fir_out_sqrt,

hour,

mini

);

inputclk,rst_n;

input[7:

0]abus;

inputale,rbar_n,wbar_n,cs_n;

inputpebar_n;

input[7:

0]fir_in;

inout[7:

0]dbus_xio;

output[13:

0]hour,mini;

output[20:

0]fir_out;

output[15:

0]fir_out_sqrt;

wire[15:

0]fir_out_Hex

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 党团建设

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1