RAM的实验.docx
《RAM的实验.docx》由会员分享,可在线阅读,更多相关《RAM的实验.docx(16页珍藏版)》请在冰豆网上搜索。
RAM的实验
RAM的实验
1.实验目的
了解通过Quartus调用Modelsim的方法,利用Modelsim仿真Quartus中的程序。
2.实验内容
用Quartus调用Modelsim完成门级仿真和RTL仿真
3.代码分析
1)本程序让计数器包含一个时钟使能,同时时钟使能出现的间隔变化,并用一个可变模(计数最大值+1)的计数器,改变它的模,然后把进位输出作为时钟使能。
2)在主模块中首先定义了所有的输入输出接口和线。
modulefilter_tb(
ClkEn,
clk_50M,
FreqWord,
Phase,
dds_out,
filter_out
);
inputClkEn;
inputclk_50M;
input[23:
0]FreqWord;
input[23:
0]Phase;
output[11:
0]dds_out;
output[11:
0]filter_out;
wireSYNTHESIZED_WIRE_0;
wire[11:
0]SYNTHESIZED_WIRE_1;
assigndds_out=SYNTHESIZED_WIRE_1;
assignSYNTHESIZED_WIRE_0=0;
3)然后调用dds模块和FIR_Hamming_13Taps_LP_0d250模块
ddsb2v_inst(
.Clock(clk_50M),
.ClkEn(ClkEn),
.FreqWord(FreqWord),
.PhaseShift(Phase),
.Out(SYNTHESIZED_WIRE_1));
defparamb2v_inst.DATA_W=12;
defparamb2v_inst.PHASE_W=24;
defparamb2v_inst.TABLE_AW=12;
FIR_Hamming_13Taps_LP_0d250b2v_inst1(
.Clock(clk_50M),
.ClkEn(ClkEn),
.AsyncRst(SYNTHESIZED_WIRE_0),
.In(SYNTHESIZED_WIRE_1),
.Out(filter_out));
4)dds模块中同样先定义了所有的输入输出接口:
moduledds
#(parameterPHASE_W=24,
parameterDATA_W=16,
parameterTABLE_AW=12
)
(input[PHASE_W-1:
0]FreqWord,
input[PHASE_W-1:
0]PhaseShift,
inputClock,
inputClkEn,
outputsigned[DATA_W-1:
0]Out
);
regsigned[DATA_W-1:
0]sinTable[2**TABLE_AW-1:
0];//SinetableROM
reg[PHASE_W-1:
0]phase;//PhaseAccumulater
wire[PHASE_W-1:
0]addr=phase+PhaseShift;//PhaseShift
assignOut=sinTable[addr[PHASE_W-1:
PHASE_W-TABLE_AW]];//Lookupthetable
5)然后用SineTable.dat文件对sineTable进行初始化,并把FreqWord作为可变模
initialbegin
phase=0;
$readmemh("SineTable.dat",sinTable);//InitializetheROM
end
always@(posedgeClock)begin
if(ClkEn)
phase<=phase+FreqWord;
end
endmodule
4.实验步骤
1)新建一个工程,设置工程目录、工程名和顶层模块名
2)选择已有文件,将两个设计文件复制到工程目录下,然后选择它们
3)选择器件
4)选择第三方工具,这里将第三方仿真工具设置为ModelSim-AE
5)Assignments-Device中,DeviceandPinOption中,Voltage标签,修改默认IO电平
6)Dual-PurposePins标签
7)UnusedPins标签,未使用的Pin设置为输入
8)新建顶层文件
9)为两个verilog文件创建原理图符号,在原理图文件中添加它们
10)修改DDS模块的参数
11)连线并保存原理图文件
12)分析工程,已获得工程结构和IO口等信息
13)Tools-Options中,General-EDAToolOptions中,设置ModelSim-AE的安装路径
14)在QuartusII中添加Testbench,Assignments-EDAToolSettings
testbench的写法与ModelSim中一模一样,它最终也是给ModelSim-AE使用的
15)Tools-RunEDASimulationTool-EDAGateLevelSimulation...
16)然后选择仿真的条件
17)RTL级仿真时,Modelsim使用源文件仿真,但Modelsim不识别QuartusII中的原理图文件(bdf文件),可通过bdf文件生成verilog文件,添加生成的verilog文件,并设置为工程的顶层文件,编译后,再进行RTL仿真
Tools-RunEDASimulationTool-EDARTLLevelSimulation
5.实验结果的测试和分析
Modelsim中RTL仿真结果如下:
门级仿真结果如下:
6.实验总结
通过这次试验,我知道了如何用Quartus来调用Modelsim进行仿真,仿真过程中出现的一些问题也让我体会到了同学间团结协作的重要性。
7.参考文献
1)源代码:
罗杰的dds.vSineTable.dattestbench.v
2)图片:
王贞炎《FPGA和SOPC应用——QuartusII和ModelSimAE》