当前位置:文档之家› 分频器实验

分频器实验

实验一分频器设计一、实验项目分频器设计实验:利用QuatusII仿真实现分频器设计。

二、实验仪器及器件计算机、USB-BLASTER下载线、数字系统实验箱、5V稳压电源。

三、实验目的1、熟悉教学实验板的使用,初步了解掌握Verilog HDL语言和VHDL语言。

2、掌握分辨器原理,熟悉分频器的功用,学习分频器的设计、掌握用Verilog HDL 或者VHDL 语言描述分频器的方法。

3、熟悉和掌握FPGA开发软件QuatusII的基本操作,用QuatusII编译Verilog和VHDL语言。

4、掌握USB-BLASTER下载工具的安装、以及程序下载方法。

5、学会FPGA I/O引脚分配和实现过程。

四、实验要求及内容1、首先下载给定的VHDL硬件描述语言编写的分频器示例程序,读懂程序,编译并仔细观察在实验板上的现象。

2、在QuatusII平台上进行波形仿真。

3、扩展内容:设计分频电路得到3分频器、8分频器和32分频器。

编写分频器的Verilog 或VHDL代码,并仿真,同时给出3、8、32分频仿真波形。

五、实验原理一个数字系统中往往需要多种频率的时钟脉冲作为驱动源,这样就需要对FPGA的系统时钟(频率较高)进行分频。

比如在进行流水灯、数码管动态扫描设计时不能直接使用系统时钟(太快而肉眼无法识别),或者需要进行通信时,由于通信速度不能太高(由不同的标准限定),这样就需要对系统时钟分频以得到较低频率的时钟。

分频器主要分为偶数分频、奇数分频、半整数分频和小数分频,如果在设计过程中采用参数化设计,就可以随时改变参量以得到不同的分频需要。

在对时钟要求不是很严格的FPGA系统中,分频通常都是通过计数器的循环计数来实现的。

偶数分频(2N)偶数分频最为简单,很容易用模为N的计数器实现50%占空比的时钟信号,即每次计数满N(计到N-1)时输出时钟信号翻转。

奇数分频(2N+1)使用模为2N+1的计数器,让输出时钟在X-1(X在0到2N-1之间)和2N时各翻转一次,则可得到奇数分频器,但是占空比并不是50%(应为X/(2N+1))。

得到占空比为50%的奇数分频器的基本思想是:将得到的上升沿触发计数的奇数分频输出信号CLK1,和得到的下降沿触发计数的相同(时钟翻转值相同)奇数分频输出信号CLK2,最后将CLK1和CLK2相或之后输出,就可以得到占空比为50%的奇数分频器。

原理图如下:用Quartus II 得到的占空比为50%的9分频时钟输出信号outclk如下:六、实验步骤:(开始建立工程项目)(1)在WINDOWS界面双击QuatusII图标,打开QuatusII软件,进入QuatusII开发环境;(2)选择“File=>New Project Wizard”或Create a New Project ,出现如下向导对话框;(3)点击Next>,弹出如下New Project Wizard对话框,填写Directory,Name, Top-Level Entity等项目。

其中第一、第二、第三个文本框分别是工程项目目录、项目名称和项目顶层设计实体的名称。

(4)设置好存储位置和项目名称后点击Next>,弹出出现添加工程文件的对话框;(5)在对话框中,我们可以导入已经存在的*.vhd、*.vhdl或*.verilogwen 文件(注:导入的文件名称需和项目名称一致),若原来己有文件,可选择相应文件。

若需要导入已存在文件到当前项目中,则按照以下步骤操作;若无需导入文件则直接点击Next> , 跳过步骤(5)、(6)、(7),执行步骤(8)(6)点击红色框选中的按钮,弹出窗口,选择要导入的文件,选中oushufenpin.vhd(7)点击“打开”,File name:显示需要导入文件的位置:(8)点击Add,将选中的文件添加到项目中;(9)点击Next>,如下选择FPGA器件对话框,在Family下拉框中,根据需要选择一种型号的FPGA,比如CycloneII系列FPGA。

然后在“Available devices:”中根据需要的FPGA型号选择FPGA型号;(10)选择器件类型-型号后,点击Next>,如下图,弹出其他EDA工具的对话框,由于我们使用Quartus Ⅱ的集成环境进行开发,因此不要作任何改动。

(11)单击Next进入工程的信息总概对话框;(12)单击Finish按钮就建立了一个空的工程项目;(编辑设计文件)(13)执行“File=>New”弹出新建文件对话框,Quartus Ⅱ支持6种设计输入法文件(Design Files): “AHDL File ”,是AHDL文本文件;“Block Diagram/Schematic File ”,是流程图和原理图文件,简称原理图文件;“EDIF File ”,是网表文件;“SOPC Builder System ”,是可编程片上系统的编辑系统; “Verilog HDL File ”,是Verilog HDL文本文件; “VHDL File ”,是VHDL文本文件。

这里我们使用VHDL语言,因此选择VHDL File。

(14)单击OK后,即建立一个空的原理图文件,在Quartus窗口的右方看到该文件(Vhdl.vhd);(15)执行File=> Save as命令,把它另存为文件名是“oushufenpin”(自己命名)的VHDL文件,文件后缀为.vhd。

使该文件添加到刚建立的工程目录中去。

(16)点击保存,则将当前的VHDL 文件保存至当前工程中,Quartus 窗口的右方看到该文件名为oushufenpin.vhd,并在该文件中写入工程代码;(17)选择“Processing=》Start Compilation”或通过点击快捷菜单按钮,开始编译(18)编译结束后,会出现如下图所示的对话框,对话框会显示编译的错误和警告的情况。

若有错误,则可先双击编译器界面下方出现的第一个错误提示,可使第一个错误处改变颜色。

检查纠正,第一个错误后保存再编译,如果还有错误,重复以上操作,直至最后通过。

最后通过时应没有错误提示但可有警告提示(编辑波形文件)(19)执行“file->new”选择“Verification/Debugging Files”标签中的“Vector WaveformFile ”(波形文件),然后单击“OK”确定;(20)出现波形文件编辑器;(21)单击鼠标右键,出现下图所示菜单,选择Insert Node or Bus…命令;(22)此处我们只需要在name栏键入输入波形名clkin,单击ok按键;(23)设置仿真时间执行Edit=>End Time命令弹出如下设置时间对话框,设置总时间为1.0us:执行Edit=>Grid Size命令,设置时间单位为10 ns(24)设置输入信号波形单击工具箱中缩放工具按钮,将鼠标移到编辑区内,单击鼠标,调整波形区横向比例(左键放大,右键缩小),单击工具箱中的选择按钮,然后在要设置波形的区域上按下鼠标左键并拖动鼠标,选择要设置的区域;(25)单击工具箱中高电平设置按钮,将该区域设置为高电平;(26)用相似的方法设置其他区域的波形,注意波形与真值表相对应;(27)选择“processing-》generate functional simulation netlist”,弹出保存对话框:(文件名需要与对应的.vhd文件名一致)(28)点击是,弹出对话框,保存路径与工程路径一致,文件名为oushufenpin:(29)点击保存,将该波形文件保存,保存成功,弹出对话框;(30)再选择“processing=》Start simulation”,进行仿真;(31)认真核对输入输出波形,可检查设计的功能正确与否。

七、实验结果偶数分频程序library ieee;use ieee.std_logic_1164.all;entity oushufenpin isport( clkin:in std_logic; --时钟信号输入clkout:out std_logic); --时钟信号输出end oushufenpin;architecture aroneMHZ of oushufenpin issignal data:integer range 0 to 10;signal Q:std_logic;beginprocess(clkin)beginif(clkin'event and clkin='1')thenif(data=0) then --此句为你想要的分频比,data=0,1,2,3,4.......9的分频比为1,2,3,,,10data<=0;Q<=not Q;elsedata<=data+1;end if;end if;clkout<=Q;end process;end aroneMHZ;偶数分频仿真结果奇数分频程序(前面部分一样)process(clkin)beginif(clkin'event and clkin='1')thenif(data=0) then --3分频实现奇数分频Q<=not Q;data<=data+1;end if;if(data=1) thenQ<=not Q;data<=data+1;end if;if(data=2) thendata<=0;end if;end if;clkout<=Q;end process;end aroneMHZ;奇数分频仿真结果3分频5分频八、数据分析偶数分频:以分频比为4(8分频)为例,当第一个时钟来临时,当data=3时,将0赋给data,电平发生反转,否则data+1,以此实现循环奇数分频:以3分频为例,当第一个时钟来临时,即data=0时,电平发生反转,让data+1;即data=1时,电平发生反转,且让data+1;当data=2时,电平保持原来状态,将0赋给data,实现循环。

九、参考文献(使用Vrerilog或者VHDL语言编写程序,分析程序,使用QuatusII时,参考的资料,书籍。

)十、实验体会实验中对VHDL语言不是很熟悉,导致对程序的不理解,同时对Quartus操作不是太熟悉,收获是小组在一起讨论,收获很大,加深了对问题的思考,同时对程序有了更深刻的理解。

相关主题