Verilog入门训练 —二选一数据选择器

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
最后编译项目。“Processing”——“Start Compilation”。
9. 烧写程序。“Tools”——“Programor”。检查是否有编程器 USBBlaster,然后按“Start” 开始烧写程序。
10. 在开发板上检验实验结果,拨动开关至不同状态,查看 LED 灯是否符合设计要求。拍照, 记录实验结果。未能得到预期实验结果的同学思考各个步骤,排除错误。
在弹出来的器件选择界面中,在 Family 栏选择 Cyclone IV E,右边 Package 处选择“FPGA”, 然后在列表中找到需要的 EP4CE30F23C08 器件,点击 OK。
器件选择后,需要重新编译程序:“Processing”——“Start Compilation”。 编译通过后,查看开发板使用手册,指定引脚。A、B、S 对应 SW0 至 SW2,引脚分别为: C2、F1、F2,。LED_OUT 对应 LEDG0,引脚为 J2。“Assignments”—“Pin Planner”。
2. 列出真值表
S
A
B
F
0
X
X
A
1
X
X
B
得到:F=AS + BS
A
0
&
0
0
S
F
0
&
B
0
0
3. 使用 Quartus 8.0 建立项目,建立过程和注意事项见前两周的实验指导,选择器件时随便 指定一个。这里的项目名称为 mux21。(切记项目保存路径和实验过程中新建的文件保 存路径都不要出现中文)
4. 项目建好后,新建 Verilog 选择“File”——“New”——“Verilog HDL file”。输入以下代码
仿真成功后,回到波形文件,会弹出提示如下:
选择“是”来更新仿真结果,如下图所示:
根据仿真结果分析,例如在红线所在位置,S=1,因此 F 应该等于 B。这时候 B 的值为 0,因 此 F=0,结果正确。也可以从其他任意位置分析,看电路是否符合要求。 7. 指定引脚
点击“File”——“Save Project”,然后关闭 quartus 8.0。打开 Quartus 11.0,选择“Open Project”,找到上面保存的项目。项目打开后,首先更换器件,方法如下:点击项目中 器件(刚才随便指定的),右键,选择“Device”
这时候会看到所有的引脚会列出来,如下所示,四个输入默认为低电平,输出状态未知。 由实验原理可知,为了得到 A、B、S 三个信号不同的组合,设置 A 为 10ns 周期信号,B 为 20ns 周期信号,S 为 40ns 周期信号。设置方法如下: 选择输入“A”,点击右键,选择“Value”——“Clock”。
在 Clock 中设置周期为 10ns。如下所示:
按设置完成后,如下所示:
保存波形文件,路径不要有中文! 添加完激励信号后,选择“Processing”—“Simulator Tool”,在 “Simulation mode”中选择 “Functional”,再点击“Generate Functional Simulation Netlist”。然后 选择“Overwrite simulation input file with simulation result”,点击“Start”开始仿真。
代码主体部分中的 not、and 和 or 是 quartus 中已经定义好的基本门电路,代码相当于直接 调用。这点非常重要,意味着写好了一个电路的代码,如果它可以作为其他更复杂电路的一 部分,直接调用即可。这样不管怎么复杂的电路,都可以由一个一个的小电路“堆砌”而成, 这就是 Verilog 的核心思想,“建模”!更复杂的用法将在后面的学习中接触,这里不必深究。
8. 设置其他没有使用的引脚为接地状态 第一步,在项目导航栏中选择器件名称,右键选择“Device”;第二步,在弹出框中选择 “Device and Pin Options”
在“Category”中选择“Unused Pins”,将所 有“Reserve all unused pins”设置为“As output driving ground”,点击“OK”。
保存 verilog 文件,并命名为 mux21。上述方式为数据流描述方式。思考:为什么叫数据流 标书方式?
5. 编译项目。“Processing”——“Start Compilation”
6. 功能仿真 编译通过后,新建波形仿真文件:“File”——“New”,选 择“Vector Waveform File”,如 下 图所示:
2. 使用结构描述方式完成数据二选一电路。 由于 F 的表达式为:F=AS + BS 实现上述电路一共需要 1 个非门、2 个与门和 1 个或门,电路图如下:
A
0 & 0 andcntrl1
0
S
not_s
F
0
&
Leabharlann Baidu
B
0
0
andcntrl2
其他设置全部不要改变,回到 Verilog 代码,将原来的代码改写为下述代码:
扩展实验部分: 1. 使用行为描述实现二选一电路。
所谓行为级描述,就是使用 always 或者 initial 过程块实现电路功能。 其他设置全部不要改变,回到 Verilog 代码,将原来的代码改写为下述代码:
重新编译代码:“Processing”——“Start Compilation”。 下载代码到 FPGA,看电路是否按照要求工作。 思考以下几点:reg 是什么关键词?always 的用法、格式?
实训 2:数据选择器的 FPGA 设计与实现
问题提出:数据选择器是一种可以从多个输入信号中选择一个信号作为输出的器件。最简单 的电路为二选一。使用 Verilog 设计实现二选一数据选择器,使用软件仿真验证代码的正确 性,并使用 FPGA 验证结果。
1. 逻辑抽象 假设 A、B 为输入,控制信号为 S,输出为 F。当 S=0 时,F=A;当 S=1 时,F=B。FPGA 实现时,使用 3 个按键分别代表 A、B 和 S,一个 LED 灯代表 F,利用不同的组合即可验 证代码的正确性。
在出现的编辑界面左侧右键,选择如下:
在“Insert Node or Bus”里选择“Node Finder…” 在弹出来的“Node Finder”中,首先在“Filter”中选 择“Pins: Unassigned”,然后 点击“list”,
在“Nodes Found”中会列出所有的引脚,第三步选择全部引脚(鼠标拉),点击“>>”,最 后点击“OK”即可。在回到的“Insert Node or Bus”界面点击“OK”。
相关文档
最新文档