实验三3277李鑫PLD.docx
- 文档编号:30564789
- 上传时间:2023-08-16
- 格式:DOCX
- 页数:14
- 大小:1.39MB
实验三3277李鑫PLD.docx
《实验三3277李鑫PLD.docx》由会员分享,可在线阅读,更多相关《实验三3277李鑫PLD.docx(14页珍藏版)》请在冰豆网上搜索。
实验三3277李鑫PLD
实验课程名称:
现代数字系统设计
实验项目名称:
简单的组合逻辑电路设计
班级:
2010251
姓名:
李鑫学号:
20103277
成绩:
________实验时间:
2012.10.25
实验三:
七段数码管显示
1.显示简单字符
七段数码管显示电路如下图所示:
图中包含一个七段解码器模块,c2~c0是解码器的3个输入,当输入值不同时,输出不同的字符。
如表中所示,当输入值为100~111时,输出空格,即数码管全暗。
七段数码管的不同段位用数字0~6表示,注意七段数码管是共阳极的,即各管段输入低电平时,数码管亮;否则数码管暗。
具体实验步骤如下:
第1步:
新建一个Quartus项目。
第2步:
新建一个VHDL文件,实现上述七段解码器。
具体代码如下:
libraryieee;
useieee.std_logic_1164.all;
entitychar_7segis
port(
c:
instd_logic_vector(2downto0);
hex:
outstd_logic_vector(6downto0));
endchar_7seg;
architecturebehave_char_7segofchar_7segis
begin
withc(2downto0)select
hex<="0001001"when"000",--"H"
"0000110"when"001",--"E"
"1000111"when"010",--"L"
"1000000"when"011",--"O"
"1111111"whenothers;--""
endbehave_char_7seg;
保存VHDL文件,并命名为char_7seg.vhd。
第3步:
语法检查,通过后,进行引脚分配,分配表如下:
信号
DE2上的器件
C[2..0]
SW2~SW0
hex[6..0]
HEX0[6..0]
第4步:
编译项目,完成后下载到FPGA中,并验证其功能。
2.显示0~9数字
在完成简单字符显示电路之后,设计一个用于显示0~9数字的七段数码管电路。
电路图如下图所示,c3~c0是七段数码器的输入,当输入0000~1001时,则输出0~9,如表中所示;当输入1010~1111时,输出空格。
对上述代码进行相应的修改,并将文件另存为num_7seg.vhd。
接着将num_7seg.vhd设定为项目的顶层设计文件,再进行语法检查和引脚分配。
引脚分配表如下表所示,具体的FPGA引脚可通过查找附录表获取。
分配完后重新编译项目文件,并下载验证。
信号
DE2上的器件
C[3..0]
SW3~SW0
hex[6..0]
HEX0[6..0]
libraryieee;
useieee.std_logic_1164.all;
entitynum_7segis
port(
c:
instd_logic_vector(3downto0);
hex:
outstd_logic_vector(6downto0));
endnum_7seg;
architecturebehave_num_7segofnum_7segis
begin
withc(3downto0)select
hex<="1000000"when"0000",
"1111100"when"0001",
"0100100"when"0010",
"0110000"when"0011",
"0011001"when"0100",
"0010010"when"0101",
"0000010"when"0110",
"1111000"when"0111",
"0000000"when"1000",
"0010000"when"1001",
"1111111"whenothers;
endbehave_num_7seg;
3.循环显示4个字符
循环显示4个字符的电路图如下:
电路的工作原理是,输入端U、V、W和X的输入值分别是000、001、010和011,通过s1和s0选择四个输入端其中一个作为七段解码器的输入值,从而显示H、L、E和O任一字符。
这个实验的实现方法有两个,一个是采用图形编辑的方法实现,与实验1中三态与门的实现方法类似。
不过事先需要将实验2中的mux_4to1_3bit.vhd添加到本项目中,并为其创建一个符号;同时,为char_7seg.vhd创建一个符号。
另一个方法是采用VHDL文本输入,但也需要事先将实验2中的mux_4to1_3bit.vhd添加到本项目中。
方法一:
图形文件的最终效果图如下图所示。
图中的inst1和inst分别是mux_4to1_3bit.vhd和char_7seg.vhd所生成的符号。
值得注意的是,s[1..0]与输入引脚SW[1..0]连接,其他输入端类似,而hex[6..0]与输出引脚HEX0[6..0]连接。
这里的输入和输出引脚全部采用DE2的引脚名称(注意区分大小写),目的是可以省去手动分配引脚的工作。
第1步:
首先将图形文件另存为char_4to1_7seg.bdf,并将该文件设定为项目的顶层设计文件,再进行语法检查。
第2步:
检查通过后,打开引脚规划(PinPlanner)窗口,命令是Assignments->Pins。
第3步:
选择Assignments->ImportAssignments..命令,导入DE2_pin_assignments.csv文件,该文件是DE2板上所有引脚的分配。
导入之后,可以发现所有输入和输出引脚已经自动完成引脚分配,原因是我们把引脚的名称设定为DE2默认的引脚名称。
第4步:
编译下载。
方法二:
通过VHDL代码实现,这里需要用到元件的概念。
整个文件的代码如下:
libraryieee;
useieee.std_logic_1164.all;
entitychar_4to1_7segvis
port(
s:
instd_logic_vector(1downto0);
U,V,W,X:
instd_logic_vector(2downto0);
hex0:
outstd_logic_vector(6downto0));
endchar_4to1_7segv;
architecturebehave_char_4to1_7segvofchar_4to1_7segvis
componentchar_7segis
port(
c:
instd_logic_vector(2downto0);
hex:
outstd_logic_vector(6downto0));
endcomponent;
componentmux_4to1_3bitis
port(
s:
instd_logic_vector(1downto0);
u,v,w,x:
instd_logic_vector(2downto0);
m:
outstd_logic_vector(2downto0));
endcomponent;
signalmout:
std_logic_vector(2downto0);
begin
u1:
mux_4to1_3bitportmap(s,U,V,W,X,mout);
u2:
char_7segportmap(mout,hex0);
endbehave_char_4to1_7segv;
代码中用红色标识出来的就是元件的定义和调用部分。
将文件另存为char_4to1_7segv.vhd,并将其设定为项目的顶层设计文件。
再进行语法检查、引脚分配和编译下载。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 3277 李鑫 PLD