EDA技术实验指导书.doc_第1页
EDA技术实验指导书.doc_第2页
EDA技术实验指导书.doc_第3页
EDA技术实验指导书.doc_第4页
EDA技术实验指导书.doc_第5页
免费预览已结束,剩余32页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

eda技术实验指导书周 次教 学 内 容2简单逻辑电路实验3d触发器设计41位二进制全加器设计54位加法计数器6带有复位和时钟使能的十进制计数器7较复杂电路的原理图设计10数控分频器的设计118位十六进制频率计设计12基于lpm_counter的数控分频器设计13用状态机设计序列检测器的电路设计长沙学院电子与通信工程系2007年8月35目 录实验一 简单逻辑电路实验1实验二 2选1多路选择器4实验三 d触发器设计5实验四 1位二进制全加器设计6实验五 4位加法计数器9实验六 7段数码显示译码器设计10实验七 带有复位和时钟使能的十进制计数器11实验八 带有并行置位的移位寄存器12实验九 较复杂电路的原理图设计13实验十 数控分频器的设计14实验十一 8位十六进制频率计设计15实验十二 基于lpm_counter的数控分频器设计16实验十三 基于lpm_rom的4位乘法器设计17实验十四 用状态机设计序列检测器的电路设计18实验十五 正弦信号发生器设计与lpm定制19附 录20实验一 简单逻辑电路实验一、实验目的1. 学习create-sopc实验平台的使用方法;2. 熟悉quartus ii 软件平台和使用 vhdl 语言设计电路的方法;3. 学习简单逻辑电路的设计、仿真和硬件测试。二、实验内容运用quartus ii 集成环境下的vhdl文本设计方法设计半加器,进行波形仿真、引脚分配并下载到实验设备上进行逻辑功能验证。三、实验步骤及参考程序1. 创建个人实验文件夹(最好使用英文字母命名不要用中文或数字名称)如:d:example2. 运行 quartus 软件。3. 创建一个vhdl设计文件:file new,在 device design files 中选择vhdl file。在程序编辑窗输入vhdl程序并保存;在弹出对话框中输入文件名(必须和程序中实体名相同)并使下方小框内出现“”,点击保存会弹出“是否创建新工程”提示信息如图1-1所示。 图1-1 图1-2 4. 创建一个新工程:点击图1-1中“是”可进入创建工程向导(也可以file new project wizard进入向导),此时看到的默认工程名、顶层实体名都为h_adder(其中工程名可换名但顶层实体名必与编写的程序实体名一致),如图1-2。点击next,再在弹出窗中点击next,选择目标器件:cyclone 系列 ep1c20f324c8 芯片,如图1-3。图1-35. 编译:选择 processingstart compilation命令,对此工程进行逻辑分析、综合适配、时序分析等。如果设计正确则完全通过各种编译,如果有错误则根据报错信息返回 h_adder.vhd 进行修改,直至完全通过编译为止。6. 创建一个仿真波形文件: file new,在 other files 中选择vector waveform file,如图1-4,进入波形编辑窗口。 图1-4 图1-57. 以扩展名为.vwf,文件名与编译的文件名相同,保存创建的仿真波形文件,如h_adder.vwf。8. 输入引脚:name 栏中点击鼠标右键,选择 “insert node or bus”,在其对话框中点击 “node finder” 按钮,弹出 “node finder” 对话框,named:*;filter :pin:all,点击“list”,列出所有引脚,在其中选择需要仿真的引脚,如图1-5所示。它们将在波形编辑窗口中出现。 图1-6 图1-79. 对所有input引脚赋初值(所有可能出现的信号组合状态都要求存在),对所有output引脚赋随机值后,保存仿真波形文件,如图1-6所示。10. 开始仿真:选择 processingstart simulation若仿真没有出错,则在完成仿真后,可以看到仿真结果波形,观察输入、输出波形逻辑关系是否是与设计要求相符,波形仿真无误后进行下步操作。11. 选择 assignments assignments editor,在assignments editor 窗口中选择 pin 标签页,再按下表分配引脚,如图1-7所示:引脚名称引脚编号连接网络引脚名称引脚编号连接网络apin_n14key2copin_n15led2bpin_v11key3sopin_u11led312. 重编译:选择 processingstart compilation命令,重新编译,完成后形成可配置到fpga的 h_adder.sof 文件和配置到外部存储器的h_adder.pof文件。13. 编程下载:使用create-sopc2000实验系统及sopc 开发板,将byteblaster ii 下载电缆插入sopc 开发板的jtag 下载接口中。仔细检查确保接线无误后打开电源。在quartus ii 软件中,选择tools/programmer 菜单,出现如图1-8所示的编程配置界面。在”mode”中选择jtag,点击”add file”按钮添加需要配置的sof 文件,选中program/configure,点击”start”按钮就可以对芯片进行配置。14. 测试:配置完成后按动key2和key3,改变a、b 的输入电平观察输出结果验证设计是否正确。参考程序如下:library ieee;use ieee.std_logic_1164.all; entity h_adder is port(a,b:in std_logic; co,so:out std_logic);end;architecture one of h_adder isbegin so = not(a xor (not b ); co = a and b;end;四、实验扩展及思考1. 一位全加器vhdl文本输入设计;2. 改变输入、输出引脚编号,并测试逻辑功能。实验二 2选1多路选择器一、实验目的1. 学习create-sopc实验平台的使用方法;2. 熟悉quartus ii 软件平台和使用 vhdl 语言设计电路的方法;3. 掌握vhdl语言的基本语法和语句;4. 把握vhdl程序设计组合逻辑电路的基本结构和设计特点。二、实验内容运用quartus ii 集成环境下的vhdl文本设计方法设计2选1多路选择器,进行波形仿真、引脚分配并下载到实验设备上进行逻辑功能测试。三、实验步骤及参考程序实验步骤和方法参考实验一,引脚分配可参考下表。引脚名称引脚编号连接网络引脚名称引脚编号连接网络apin_m3fpga_m1qpin_r10led1bpin_m4fpga_m2selpin_t10key1参考程序如下:library ieee;use ieee.std_logic_1164.all;entity mux21a is port(a,b,sel:in std_logic; q:out std_logic);end;architecture behave of mux21a is begin process (a,b,sel) begin if sel=0 then q=a; else q=b; end if; end process;end;四、实验扩展及思考1. 分析程序中的每一条语句的功能及特点;2. 采用多种描述方式表达出2选1多路选择器功能。实验三 d触发器设计一、实验目的1. 熟悉quartus ii 的 vhdl 文本设计简单时序电路的方法;2. 掌握时序电路的描述方法、波形仿真和测试,特别是时钟信号的特性。二、实验内容运用quartus ii 集成环境下的vhdl文本设计方法设计简单时序电路d触发器,依据d触发器的工作特性,进行波形仿真和分析、引脚分配并下载到实验设备上进行功能测试。三、实验步骤及参考程序实验步骤和方法参考实验一,引脚分配可参考下表。引脚名称引脚编号连接网络clkpin_t10key1dpin_m3fpga_m1qpin_r10led1参考程序如下:library ieee;use ieee.std_logic_1164.all;entity dff1 isport(clk:in std_logic; d:in std_logic; q:out std_logic);end;architecture bhv of dff1 is signal q1:std_logic;begin process(clk) beginif clkevent and clk=1then q1=d;end if;q new,在 device design files 中选择block diagram/schematic file,如图4-1所示,点击ok打开原理图编辑窗口。 图4-1 图4-23. 在图形编辑窗中双击鼠标左键,将弹出元件输入对话框,在对话框右栏打开元件库找到需要的元件,如图4-2所示,点击ok即可将元件调入原理图编辑窗。将所有需要的元件都调入编辑窗。4. 将各个元件采用单击鼠标并拖动的方法连接号电路图,然后分别在input和output的pin_name上双击使变为黑色,再分别输入各引脚名,如图4-3所示。图4-35. 选择filesave as命令,选择为此工程已建好目录,将设计好的原理图文件取名为h_adder.bdf同时使下方小框内出现“”,点击保存会弹出“是否创建新工程”提示信息如图4-4所示。 图4-4 图4-56. 创建一个新工程:点击图4-4中“是”可进入创建工程向导(也可以file new project wizard进入向导),此时看到的默认工程名、顶层实体名都为h_adder,此时将工程名换为f_adder顶层实体名不变,如图4-5所示。点击next,再在弹出窗中点击next,选择目标器件:cyclone 系列 ep1c20f324c8 芯片。按照实验一的方法完成半加器的编译、仿真。7. 将半加器设置成可调用的元件,在打开半加器原理图文件下,选择filecreate/updatecreate symbol files for current file命令,如图4-6所示。此时半加器文件形成了一个符号元件可供高层次设计调用。图4-68. 建立全加器原理图。与半加器原理图建立方法相同,选择filenew进入编辑窗,双击编辑窗,弹出元件输入对话框,此时在对话框右栏顶上可以看到多了一个project元件库,其中有一个元件,它就是前面生成的可供调用的半加器元件,如图4-7所示。找到需要的元件,连接好全加器原理图,选择projectset as top-level entity命令,将其设置为顶层文件,如图4-8所示。图4-7图4-8图4-99. 编译、仿真、编程下载和实验一基本相同,需要注意的是:波形仿真时的波形文件名必须与图4-9所示的框中名称一样的.vwf文件。引脚分配可参考下表。引脚名称引脚编号连接网络引脚名称引脚编号连接网络ainpin_t10key1coutpin_n15led2binpin_n14key2sumpin_r10led1cinpin_v11key3四、实验扩展及思考1vhdl和原理图结合设计2多位加法计数器的设计实验五 4位加法计数器一、实验目的1. 掌握时钟信号、进程和buffer端口的运用;2. 了解计数器的设计、仿真和硬件测试,进一步熟悉vhdl语句、语法及应用等。二、实验内容运用quartus ii 集成环境下的vhdl文本设计方法设计4位加法计数器,进行波形仿真和分析、引脚分配并下载到实验设备上进行功能测试。三、实验步骤及参考程序实验步骤和方法参考实验一,引脚分配可参考下表。引脚名称引脚编号连接网络引脚名称引脚编号连接网络clkpin_t10key1q2pin_n15led2q0pin_r11led4q3pin_r10led1q1pin_u11led3参考程序如下: entity cnt4 isport( clk:in bit; q:buffer integer range 15 downto 0);end;architecture bhv of cnt4 isbeginprocess(clk)beginif clkevent and clk=1 thenq=q+1;end if;end process;end bhv; 四、实验扩展及思考1. 分析程序中各语句的功能和特点;2. 比较各种端口类型以及如何应用;3. 试设计一个含异步清0和同步时钟使能的4位加法计数器。实验六 7段数码显示译码器设计一、实验目的1. 熟悉进程和case语句的运用;2. 掌握译码的概念,掌握7段数码显示器的使用方法3. 进一步熟悉vhdl语句、语法。二、实验内容运用quartus ii 集成环境下的vhdl文本设计方法设计7段数码显示译码器,要求将输入的4位二进制数进行译码,并在实验箱的7段数码管上显示对应的十六进制数值。要求进行波形仿真和分析、引脚分配并下载到实验设备上进行功能测试。三、实验步骤及参考程序实验步骤和方法参考实验一,引脚分配可参考右图。其中输入的二进制信号a用拔码开关输入,输出的十六进制数值由数码管8显示(网络号:e_7seg_a8)参考程序如下:-7段数码显示程序设计-程序包library ieee;use ieee.std_logic_1164.all;-实体(所保存的文件名要为decl7s.vhd)-如果该工程仅此一个程序文件,则工程名也为decl7sentity decl7s isport(a:in std_logic_vector(3 downto 0); -输入信号,表示4位二进制数 led_selout:out std_logic; -位选信号,选择实验箱上的7段数码管led7s:out std_logic_vector(6 downto 0);-控制数码管7个段的亮和不亮end;-结构体,结构体的名字可以任取architecture one of decl7s isbegin -将led_selout置1,该信号可以绑定e_7seg_a1到e_7seg_a8范围的任一个数码管led_seloutled7sled7sled7sled7sled7sled7sled7sled7sled7sled7sled7sled7sled7sled7sled7sled7snull;end case;end process;end;四、实验扩展及思考1、思考如何用多个数码管同时显示该数值。2、结合试验五,显示试验五中的加法计算的结果。实验七 带有复位和时钟使能的十进制计数器一、实验目的1. 熟悉进程和signal的运用;2. 进一步熟悉 7段数码显示器的使用方法;3. 进一步熟悉vhdl语句、语法。二、实验内容运用quartus ii 集成环境下的vhdl文本设计方法设计带有复位和时钟使能的十进制计数器,要求对输入的脉冲信号进行计数,并在实验箱的7段数码管上显示对应的十六进制计数值。要求具有复位和使能功能,并能输出进位信号。进行波形仿真和分析、引脚分配并下载到实验设备上进行功能测试。三、实验步骤及参考程序实验步骤和方法参考实验一,引脚分配可参考右图。参考程序:-引用library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;-实体entity cnt10 isport( clk,rst,en: in std_logic; -rst:复位; led7s: out std_logic_vector(7 downto 0);cout: out std_logic);-进位信号end;-结构体architecture bhh of cnt10 issignal cq: std_logic_vector(3 downto 0);begin -clk上升沿计数process(clk,rst,en)variable cqi :std_logic_vector(3 downto 0);begin -复位if rst=1 thencqi:=(others=0);-en为高电平时候计数elsif clkevent and clk=1 thenif en=1 thenif cqi0);end if;end if;end if;-进位if cqi=9 then cout=1 ;elsecout=0; end if;cqled7sled7sled7sled7sled7sled7sled7sled7sled7sled7sled7sled7sled7sled7sled7sled7snull;end case;end process;end;波形图:四、实验扩展及思考1、思考十六进制计数器的设计方法实验八 带有并行置位的移位寄存器一、实验目的1. 学习移位寄存器的设计方法;2. 进一步熟悉vhdl语句、语法。二、实验内容运用quartus ii 集成环境下的vhdl文本设计方法设计带有并行置位的移位寄存器,要求具有置位功能。进行波形仿真和分析、引脚分配并下载到实验设备上进行功能测试。三、实验步骤及参考程序实验步骤和方法参考实验一,引脚分配可参考右图。参考程序:-引用library ieee;use ieee.std_logic_1164.all;-实体entity shfrt isport(clk,load : in std_logic;din : in std_logic_vector(7 downto 0);qb : out std_logic);end;-结构体architecture bha of shfrt isbeginprocess(clk,load)variable reg8:std_logic_vector(7 downto 0);beginif clkevent and clk=1 thenif load =1 thenreg8:=din;else reg8(6 downto 0) :=reg8(7 downto 1);end if ;end if ;qb=reg8(0);end process;end;四、实验扩展及思考1、思考在本试验的基础上,增加移位方向的控制。2、思考循环移位寄存器的设计方法。实验九 较复杂电路的原理图设计一、实验目的1. 熟练掌握使用原理图设计较复杂电路;2. 学习原理图设计中总线的表示以及使用方法。二、实验内容运用quartus ii 集成环境下的图形设计方法设计有时钟使能的两位十进制计数器。进行波形仿真和分析、引脚分配并下载到实验设备上进行功能测试。三、实验步骤及参考电路图参考电路:图 9-1 参考电路图注意事项:如果输出端口使用总线类型,要先选定线形,线型,再画总线。总线的命名原则形如:q7.0,表示q为一条8位宽的总线。总线中的某一根信号线用q1、q2等形式表示,线型为单根信号线。如图9-1。总线和单根信号线的命名方法都是用鼠标左键点中,当信号线变为蓝色时,直接用键盘输入信号线的名字;修改时,双击信号线名字既可以更改。注意一定不能使用图9-2中的文字输入工具进行信号线的命名!图9-2 总线类型9-3 引脚分配图图9-4 波形图四、实验扩展及思考1、思考怎么样使用vhdl语言描述该电路,实现同样的功能。实验十 数控分频器的设计一、实验目的1. 学习数控分频器的设计、分析和测试方法2. 进一步熟悉vhdl语句、语法;二、实验内容运用quartus ii 集成环境下的vhdl文本设计方法设计数控分频器。进行波形仿真和分析、引脚分配并下载到实验设备上进行功能测试。三、实验步骤及参考程序实验步骤和方法参考实验一。参考程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity pulse isport(clk: in std_logic; d: in std_logic_vector(7 downto 0);fout: out std_logic);end;architecture one of pulse issignal full: std_logic;beginp_reg:process(clk) variable cnt8:std_logic_vector(7 downto 0);beginif clkevent and clk=1 thenif cnt8=11111111 thencnt8:=d;full=1;elsecnt8:=cnt8+1;full=0;end if;end if; end process p_reg; p_div:process(full)variable cnt2:std_logic;beginif fullevent and full=1 thencnt2:=not cnt2;if cnt2=1 thenfout=1;elsefout=0;end if;end if;end process p_div;end;参考波形图:四、实验扩展及思考1、思考频率测量的方法。2、扩展为16位分频器。3、怎样利用分频模块设计一个电路,使其输出方波的正负脉宽的宽度分别由两个8位输入数据控制?实验十一 8位十六进制频率计设计一、实验目的1. 设计8位十六进制频率计,学习较复杂数字系统设计方法。2. 熟悉元件例化语句;3. 熟悉包含多个文件的电路设计方法。二、实验内容运用quartus ii 集成环境下的图形设计方法设计一个8位的十六进制频率计。进行波形仿真和分析。三、实验步骤及参考程序实验步骤:1、 编写测频控制器、32位锁存器、32位计数器并编译、仿真得到正确的波形;2、 编写顶层模块;3、 仿真并分析波形。参考程序:1、测频控制器library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity ftctrl isport(clkk:in std_logic;cnt_en:out std_logic;rst_cnt:out std_logic;load:out std_logic);end;architecture behav of ftctrl issignal div2clk:std_logic;beginprocess(clkk)beginif clkkevent and clkk=1 thendiv2clk=not div2clk;end if;end process;process(clkk,div2clk)beginif clkk=0and div2clk=0 thenrst_cnt=1;elserst_cnt=0;end if;end process;load=not div2clk;cnt_en=div2clk;end;2、32位锁存器library ieee;use ieee.std_logic_1164.all;entity reg32b isport(lk:in std_logic;din:in std_logic_vector(31 downto 0);dout:out std_logic_vector(31 downto 0);end;architecture behav of reg32b isbeginprocess(lk,din)beginif lkevent and lk=1 thendout=din;end if;end process;end;3、32位计数器library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity counter32b isport(fin:in std_logic;clr:in std_logic;enabl:in std_logic;dout: out std_logic_vector(31 downto 0);end;architecture behav of counter32b issignal cqi:std_logic_vector(31 downto 0);beginprocess(fin,clr,enabl)beginif clr=1 thencqi0);elsif finevent and fin=1 thenif enabl=1 thencqi=cqi+1;end if;end if;end process;doutclk1hz,cnt_en=tsten1,rst_cnt=clr_cnt1,load=load1);u2:reg32b port map (lk=load1,din=dto1,dout=dout);u3:counter32b port map(fin=fsin,clr=clr_cnt1,enabl=tsten1,dout=dto1);end;参考波形图:四、实验扩展及思考1、怎样设计4位或8位十进制频率计?2、将顶层文件的设计用图形的方法实现。3、将32位频率值用实验箱上的8个数码管显示出来。实验十二 基于lpm_counter的数控分频器设计一、实验目的1、学习参数可设置lpm宏功能模块的应用2、学习使用lpm_counter;3、熟悉使用原理图方法设计电路。二、实验内容运用quartus ii 集成环境下的图形设计方法设计一个基于lpm_counter的数控分频器。进行波形仿真和分析、引脚分配并下载到实验设备上进行功能测试。三、实验步骤及参考程序实验步骤:1、新建图形文件图12.1 建立图形设计文件2、引入lpm_counter。在设计界面双击,展开arithmetic文件夹,选择lpm_counter,单击ok按钮。然后按提示设置lpm_counter的参数。图12.2 找到lpm_counter 图12.3将蓝色部分换位你想命名的计数器的名字图12.4 选择位宽及计数方式图12.5 选择计数的方式及使能信号图12.6 清零、预置方式设置synchronous:同步asynchronous:异步 图12.7 生成的器件外观 管脚绑定3、按图12.8编辑电路,并仿真出波形参考电路:图12.8 电路原理图仿真波形:四、实验扩展及思考1、与实验十所设计的数控分频器进行比较,思考应用参数可设置lpm宏功能模块设计电路的优点。实验十三 基于lpm_rom的4位乘法器设计一、实验目的1、熟悉参数可设置lpm宏功能模块的应用2、学习使用lpm_rom设计乘法器的方法;3、熟悉使用原理图方法设计电路。二、实验内容运用quartus ii 集成环境下的图形设计方法设计一个基于lpm_rom的4位乘法器。进行波形仿真和分析、引脚分配并下载到实验设备上进行功能测试。三、实验步骤及参考程序实验步骤参考实验十二。需要注意的是,在生成lpm_rom之前,需要先录入存储器要存储的内容,可以先新建一个文本文件,按照下列格式编写存储器的内容:width=8;depth=256;address_radix=hex;data_radix=hex;content begin00:00;01:00; 89:72;90:00;91:09; 98:72;99:81;end;其中,width表示该lpm_rom的存储宽度,width=8;表示一个单元的存储宽度为一个字节;depth表示lpm_rom的存储深度,depth=256;表示该存储器可以存储256个单元;address_radix、data_radix表示地址和数据的进制,在此为十六进制;content包括地址和该地址中存储的数据内容,89:72;表示在地址89中存储的数据为72。存储内容编辑好之后,将文本文件的后缀.txt改为.mif即可。当需要进行4位乘以4位的乘法运算时,我们把乘数和被成熟分别作为lpm_rom地址的高4位和低4位,就可以根据该地址直接得到乘积。在lpm_rom的生成过程中,可按下图指定lpm_rom的存储内容电路原理图:波形图四、实验扩展及思考1、思考使用vhdl语言设计该乘法器的方法。2、引用实验六,将乘积用数码管显示出来。实验十四 用状态机设计序列检测器的电路设计一、实验目的1. 熟悉状态机的应用;2. 进一步熟悉vhdl语句、语法。二、实验内容运用quartus ii 集成环境下的vhdl文本设计方法设计用状态及实现的序列监测器。进行波形仿真和分析、引脚分配并下载到实验设备上进行功能测试。三、实验步骤及参考程序实验步骤和方法、引脚分配参考实验七。参考程序:library ieee;use ieee.std_logic_1164.all;entity schk isport(din,clk,clr:in std_logic; clkflag: out std_logic;ab:out std_logic_vector(7 downto 0);end;architecture bheha of schk issignal q:integer range 0 to 8;signal d:std_logic_vector(7 downto 0);begin clkflag=clk; -用来观察脉冲上升沿d=11100101;process(clk,clr)beginif clr=1 thenqif din=d(7) then q=1;else qif din=d(6) then q=2;else qif din=d(5) then q=3;else qif din=d(4) then q=4;else qif din=d(3) then q=5;else qif din=d(2) then q=6;else qif din=d(1) then q=7;else qif din=d(0) then q=8;else qq=0;end case;end if;end process;process(q)beginif q=8 thenab=10001000; -当序列正确,则显示aelseab=10000000; -当序列错误,则显示bend if;end process;end;参考波形图:四、实验

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论