16位移位寄存器eda工具实现要点解析.docVIP

  • 30
  • 0
  • 约 12页
  • 2016-04-27 发布于湖北
  • 举报
EDA工具软件实验报告 Modelsim 十六位移位寄存器 实验目的: 使用软件Modelsim,通过Verilog语言表达移位寄存器的功能,进一步学习信号赋值与变量赋值、顺序语句与并行语句、进程结构。 实验原理: Clk是移位时钟信号,load_in是16位预置数据端口,load_en是数据预置使能信号,dout是移位输出,dir是移位模式控制信号。此电路工作原理是:当clk上升沿到来时进程启动,若此时预置使能load_en为高电平,则将输入端口的16位二进制数作为移位的初始值;若load为低电平,则执行:当dir为低电平时左移,为高电平时右移. 实验步骤: 1.在E盘新建文件夹命名为“dyj”再文件夹里新建子4个子文件夹分别命名为“modelsim”“synplify”“quartus”“src”。打开Modelsim软件,新建工程,File—?new—?project,在 Project Name 中写入工程的名字“shift16”, 完成后会出现 ,选择 Add Existing File module shift16(clk,dout,left_in,right_in,dir,load_en,load_in); input clk; output [15:0] dout; reg [15:0] dout; input left_in; input right_in; input dir; input load_en; input [15:0] load_in; always @(posedge clk) begin if (load_en == 1) dout = load_in; else begin if (dir == 1) begin dout = dout 1; dout[15] = left_in; end else begin dout = dout 1; dout[0] = right_in; end end end endmodule 添加完成后,接着添加(testbench)程序: timescale 1ns/1ns module shift16_tb; reg clk; wire [15:0] dout; reg left_in; reg right_in; reg dir; reg load_en; reg [15:0] load_in; initial begin clk = 0; left_in = 0; right_in = 0; dir = 0; load_en = 0; load_in = 16h1234; #5 load_en = 1; #5 load_en = 0; #5 left_in = 1; #5 dir = 1; #5 right_in = 1; end always #1 begin clk = ~clk; end shift16 sh(clk, dout, left_in,right_in,dir,load_en,load_in); endmodule 2.编译(Compile)。 在shift16.v 的文件上点右键,选择 Compile Compile All进行编译,当两个程序都编译成功,后面的“?”变成了对勾。 3.进行仿真: 点击 library,再点击 work前的“+”号,将其展开,我们仿真只需用到shift16 _tb。选择 simulate——simulate without optimization仿真,选择Add To Wave Selected Signals,这样波形窗口就会出现,设定仿真时间,然后按仿真时间旁边的运行键就会出现波形,波形图如下: synplify 4. 打开synplify.pro软件 新建工程,open project—new project,然后双击rev_1进行设定;在Device出进行选择,将Technology选择Alter a CYCLONE 在Pakage选择TC144 在Speed选择-8 在Implementation Results 处设定名字,在Implementation name处详写入名称“shift16”,在Results file name处写入相同的名称“shift16.vqm”。在Verilog选项下在Top Level Module处写入“shift16”。 在设定完成后进行保存,保存到:E:\dyj\synplify 5.然后添加

文档评论(0)

1亿VIP精品文档

相关文档