可编程逻辑器件与硬件描述语言

可编程逻辑器件与硬件描述语言
可编程逻辑器件与硬件描述语言

组合逻辑电路实验(一)实验报告

一.实验名称:3-8译码器设计 二.实验目的

1.掌握ISE 开发工具的使用,掌握FPGA 开发的基本步骤;

2.掌握组合逻辑电路设计的一般方法;

3.掌握程序下载方法,了解UCF 文件的格式;

4.初步了解开发板资源,掌握开发板使用方法。重点了解滑动开关和LED 显示灯的使用方法。

三.实验内容

1.用VHDL 实现3-8译码器模块

译码器电路如图2-1所示。其功能如表2-1所示。试用VHDL 实现该译码器,并在开发板上进行检验。

表2-1 译码器功能表 EN A B C Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0 1 X X X 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0

1

1

1

3-8 译码器

A B C

EN

Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7

图2-1 3-8译码器

0 1 1 0 0 1 0 0 0 0 0 0

0 1 1 1 1 0 0 0 0 0 0 0 2.将程序下载到FPGA并进行检验

(1)资源使用要求:用滑动开关SW3~SW1作为输入A,B,C;滑动开关SW0控制EN;8个LED灯表示8个输出。

(2)检验方法:当SW0处于ON(EN=1)位置时,所有LED灯灭;当SW0处于OFF(EN=0),反映当前输入的译码输出在LED灯上显示,即当输入为000(滑动开关SW3-SW1处于OFF状态),LED0亮,其它灯灭,等等。

四.实验步骤

1.启动ISE,新建工程文件,编写3-8译码器的VHDL模块;

2.新建UCF文件,输入位置约束;

3.完成综合、实现,生成下载文件;

4.连接开发板USB下载线,开启开发板电源;

5.下载到FPGA;

6.拨动开关,验证结果是否正确。

五.主要vhdl代码

architecture Behavioral of coder_38 is --3-8译码器行为级描述signal x:STD_LOGIC_VECTOR (2 downto 0);

begin

x <= A&B&C;

process(en,x)

begin

if(en='0')then

case x is

when "000" => Y<="00000001";

when "001" => Y<="00000010";

when "010" => Y<="00000100";

when "011" => Y<="00001000";

when "100" => Y<="00010000";

when "101" => Y<="00100000";

when "110" => Y<="01000000";

when "111" => Y<="10000000";

when others => NULL;

end case;

else Y<="00000000";

end if;

end process;

end Behavioral;

六.心得体会

这次实验内容比较简单,主要是为了熟悉Xilinx ISE及FPGA实验板的使用方法,了解整个开发流程。ISE是一款功能强大的FPGA设计软件,在实际的设计过程中要注意工程中的FPGA开发板型号等参

数的选择应与实际硬件一致,并保证UCF位置约束的正确性,要在头脑中将整个过程无缝衔接,避免细节处错误的发生。

时序逻辑电路实验(一)实验报告一.实验名称:可逆计数器设计

二.实验目的

1.进一步熟练ISE开发工具,巩固FPGA开发的基本步骤,掌握功能仿真方法;

2.掌握时序逻辑电路设计的一般方法,掌握时钟分频程序设计方法;

3.理解VHDL的层次结构设计;

4.巩固程序下载方法;

5.了解开发板时钟资源,以及时钟分频方法。

三.实验内容

1.基本可逆计数器模块

可逆计数器电路图及功能表如图3-1和表3-1所示。根据真值表易写出可逆计数器的vhdl模块,要注意的是:由于其中涉及向量类型的算术运算,所以在库中要添加STD_LOGIC_UNSIGNED.ALL;由于Y[0..7]为out类型,不能获取其值进行操作,应当添加一个信号comb,进行算术运算。

表3-1 可逆计数器功能表 clr en Up/Dn clk Y7 ~ Y0 1 X X X 00000000 0 0 X X 停止计数

0 1 1 ↑ 计数器+1操作 0

1

计数器-1操作

2.1/50000000分频器模块

可逆计数器电路图如图3-2所示。在实验板上提供了50MHz 的系统时钟频率,为获取1Hz 的计数时钟频率,需要对其进行分频,即输入端输入50MHz 的系统时钟频率,然后输出端每过25M 个频率输出信号跳变一次,即可得到1Hz 的频率输出。 3.二选一电路模块

二选一电路电路图如图3-3所示。通过滑动开关即可选择是通过1Hz 时钟输入还是通过外部按键输入。 4.综合原理图(顶层原理图)

选择原理图模式,将生成的(已封装)各模块器件组合成最终形式。如图3-4所示。

clr

en clk

Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7

Up/Dn 图3-1 可逆计数器原理图

四.实验步骤

1.建立工程文件,顶层文件为原理图;

2.编写分频模块程序,要求输入为50MHz 系统时钟,输出为1Hz 计数时钟;

3.编写2选1模块,输入为按键、1Hz 时钟和开关SW2,输出为计数源;

4.编写计数器模块主程序模块;

5.在原理图中,将各个模块连接,使用pinhead 分配引脚资源;

6.对程序进行功能仿真;

1/50000000

50M clock

1Hz clock

图3-2 1/50000000分频器

2选1 In1 Dout

图3-3 二选一电路

In2 S

En(SW1) clk

Y0(LED0)

Y3(LED3) Y4(LED4) Y5(LED5) Y6(LED6) Y7(LED7)

Up/Dn(SW0)

2选1

SW2

clr(BTN_EAST)

BTN_SOUTH

1/50M

图3-4 完整的可逆计数器

7.下载程序,进行验证。五.主要vhdl代码

--1/50000000分频模块architecture Behavioral of fdiv is signal tmp :std_logic := '0';

begin

process(cin)

variable fd:INTEGER:=0;

begin

if(cin'event and cin= '1') then

fd := fd + 1;

if(fd = 25000000) then

tmp <= not tmp;

fd := 0;

cout <= tmp;

end if;

end if;

end process;

end Behavioral;

--二选一电路模块architecture Behavioral of mux21 is begin

process(in1,in2,s)

begin

if(s='0')then

dout <= in1;

else

dout <= in2;

end if;

end process;

end Behavioral;

--基本可逆计数器模块

architecture Behavioral of counter is

signal comb: STD_LOGIC_VECTOR(7 downto 0):= "00000000"; begin

process(clr,en,sel,clk)

begin

if(clr='1')then

comb <= "00000000";

elsif(en='1')then

if(clk'event and clk='1')then

if(sel='1')then

comb <= comb + 1;

elsif(sel='0')then

comb <= comb - 1;

end if;

end if;

end if;

end process;

Y <= comb;

end Behavioral;

六、心得体会

这次的实验比较综合,共分为三个模块,通过三个模块的组合完成最终设计。通过这次实验,我不仅对于vhdl程序的编写更加熟悉,也初步构建起了硬件设计的模块化思想,学习了自顶向下的设计方法,学会了利用ise软件进行电路仿真的方法,并掌握了一些常用的硬件描述方式,大大加深了对于使用vhdl语言描述硬件方式的印象。

状态机电路实验(一)实验报告

一.实验名称:按键抖动消除及验证电路设计

二.实验目的

1.进一步熟练ISE开发工具,巩固FPGA开发的基本步骤,掌握功能仿真方法;

2.了解按键抖动的原因,抖动消除方法

3.掌握状态机的设计方法;

4.掌握消除抖动的状态机设计方法

5.巩固程序下载方法。

三.实验内容

1.原理简介

按键动作发生时,按键的输出会出现不稳定的逻辑’0’和逻辑’1’的跳变。该信号直接输入到计数器之类电路,会发生计数错误。如图3-5所示。

图3-5 信号抖动

2.状态分析

设置五个状态:S0,S1,S2,S3,S4,S5。

电路的复位信号RST有效时,电路进入复位状态S0,在S0状态下,时钟信号CLK以一定频率采样按键输入信号Key_in,如果采样到Key_in = ‘0’,则停留在S0状态,并继续采样,一旦采样到Key_in=’1’,则转入S1延时状态,进行消抖延时,当延时结束时,Delay_end=’1’,则转入S2状态,在此状态下,时钟信号CLK以一定频率采样按键输入Key_in,如果Key_in = ‘0’则转入S0,否则转入S3;状态S3,S4的转换过程和条件与S2相同,在状态S4下,如果Key_in=’1’,则转入S5状态,当进入S5时,表示经过S2,S3,S4三个连续状态检测按键输入Key_in都为‘1’,则认为按键处于稳定

状态,在S5输出按键确认信号Key_confirm=’1’。

同时在状态S5下,时钟信号CLK检测按键输入Key_in,如果Key_in = ‘1’,表示按键未释放,继续停留在S5,检测输入信号,如果检测到Key_in = ‘1’,表示按键已经释放,输出Key_confirm = ‘0’, 返回到状态S0,等待下一次按键操作。

3.状态分析图

四.实验步骤

1.画出电路的状态转换图;

2.编写完整的VHDL程序;

3.下载程序,进行验证。

五.主要vhdl代码(延时消抖模块)

architecture Behavioral of delay is type states is(s0,s1,s2,s3,s4,s5); signal nextstate:states;

begin

process(clk,keyin,keyin)

variable num:integer:=1000;

begin

if(rst='1')then

nextstate <= s0;

elsif(keyin'event and keyin='1')then case nextstate is

when s0 =>

if(keyin='1')then

nextstate <= s1;

else null;

end if;

when s1 =>

num:=num-1;

if(num=0)then

num:=1000;

nextstate <= s2;

else null;

when s2 =>

if(keyin='1')then

nextstate <= s3;

else nextstate <= s0;

end if;

when s3 =>

if(keyin='1')then

nextstate <= s4;

else nextstate <= s0;

end if;

when s4 =>

if(keyin='1')then

nextstate <= s5;

keyout <= '1';

else nextstate <= s0;

end if;

when s5 =>

if(keyin='0')then

nextstate <=s0;

keyout <= '0';

else null;

end case;

end if;

end process;

end Behavioral;

六、心得体会

这次实验只编写了一个模块——按键延时消抖模块,主要用到了有限状态机的相关知识,学会了使用状态图来清晰地显示出状态机的设计思路。有限状态机的概念在牵涉到多个固定状态之间根据不同条件进行切换的问题中很重要,在生活中随处可见其踪影。本次通过编写一个简单的有限状态机的vhdl模块,让我对它的机理与实现过程有了更深入的了解。

综合实验(一)实验报告

一.实验名称:两人乒乓球游戏

二.实验目的

1.进一步熟练ISE开发工具,巩固FPGA开发的基本步骤,掌握功能仿真方法;

2.巩固状态机的设计方法;

3.巩固按键消抖电路设计方法;

4.掌握多进程程序设计方法;

5.巩固程序下载方法;

6.了解开发板时钟资源,以及时钟分频方法。

三.实验内容

1.原理简介

两人乒乓游戏机用8个发光二极管代表乒乓球台,中间两个发光二极管作为乒乓球网,用点亮的发光二极管按照一定的方向移动来表示球的运动。在游戏机的两侧各设置发球和击球开关,甲乙双方按乒乓球比赛规则来操作开关。当甲方按动发球开关时,靠近甲方的第一个发光二极管亮,然后发光二极管由甲方向乙方依次点亮,代表乒乓球的移动,当球过网后,按照设计者规定的球位乙方就可以击球。若乙方提前击球或者未击到球,则甲方得分。然后重新发球比赛,直到一方达到21分为止,记分清0,重新开始新一局比赛。

2状态分析

设置七个状态:“等待发球状态”、“第一盏灯亮状态”、“第八盏灯亮状态”、“球向乙移动状态”、“球向甲移动状态”、“允许甲击球状态”、“允许乙击球状态”。开始的时候处于“等待发球状态”,若甲发球则状态转移到“第一盏灯亮状态”,若乙发球则转移到“第八盏灯亮状态”。以甲发球为例:若发球后乙没有提前击球(规定球移动到对方第一个发光二极管时允许击球),那么状态机从“第一盏灯亮状态”转移到“球向乙移动状态”,若此时乙依然没有提前击球,状态就转移到“允许乙击球状态”,在此状态下,如果乙击球了,那么状态就转移到“球向甲移动状态”。在“第一盏灯亮状态”、“球向乙

移动状态”中,如果乙击球了,就算提前击球,这样甲得分,状态转移到“等待发球状态”等待发球。“球向甲移动状态”之后的过程和前面的过程只不过是甲乙角色的调换而已,状态转移规则一样。3.状态分析图

四.实验步骤

1.画出游戏的状态转换图;

2.建立程序工程;

3.编写按键去抖进程

4.编写状态机进程;

5.下载程序,进行验证。

五.主要vhdl代码(游戏主体模块)

(该代码与蔡坤、魏浩源合作完成)

architecture Behavioral of game is

type states is(s0,s1,s2,s3,s4,s5,s6);

--分别对应"等待发球状态"、"第一盏灯亮状态"、"第八盏灯亮状态"、"球向乙移动状态" 、"球向甲移动状态"、"允许乙击球状态"和"允许甲击球状态"

signal next_state:states;

signal ready:STD_LOGIC:='0';

begin

process(clk,rst,hita,hitb,servea,serveb,startbtn)

variable num:integer range 0 to 10;

variable ascore,bscore:STD_LOGIC_VECTOR (3 downto 0);

begin

if(rst='1')then

Y <= "00000000";

ready <= '0';

ascore := "0000";

bscore := "0000";

elsif(startbtn='1')then

ready <= '1';

Y <= "00011000";

next_state <= s0;

ascore := "0000";

bscore := "0000";

elsif(clk'event and clk='1')then

if(ready='1')then

case next_state is

when s0 =>

if(servea='1')then

next_state <= s1;

num := 1;

elsif(serveb='1')then

next_state <= s2;

num := 6;

else num := 10;

end if;

when s1 =>

if(hitb='1')then

ascore := ascore + '1';

Y <= bscore & ascore;

next_state <= s0;

num := 0;

else

next_state <= s3;

num:=2;

end if;

when s2 =>

num := 6;

if(hita='1')then

bscore := bscore + '1';

Y <= bscore & ascore;

next_state <= s0;

num := 0;

else

next_state<=s4;

num:=5;

end if;

when s3 =>

if(hitb='1')then

ascore := ascore + '1';

num := 0;

y<=bscore & ascore;

next_state <= s0;

elsif(num=1)then

num := 2;

elsif(num=2)then

num := 3;

elsif(num=3)then

num := 4;

next_state <= s5;

elsif(num=4)then

num := 5;

next_state <= s5;

end if;

when s4 =>

if(hita='1')then

bscore := bscore + '1';

Y<=bscore & ascore;

num := 0;

next_state <= s0;

elsif(num=6)then

num := 5;

elsif(num=5)then

num := 4;

elsif(num=4)then

num := 3;

next_state <= s6;

elsif(num=3)then

num := 2;

next_state <= s6;

end if;

可编程逻辑器件与硬件描述语言

组合逻辑电路实验(一)实验报告 一.实验名称:3-8译码器设计 二.实验目的 1.掌握ISE 开发工具的使用,掌握FPGA 开发的基本步骤; 2.掌握组合逻辑电路设计的一般方法; 3.掌握程序下载方法,了解UCF 文件的格式; 4.初步了解开发板资源,掌握开发板使用方法。重点了解滑动开关和LED 显示灯的使用方法。 三.实验内容 1.用VHDL 实现3-8译码器模块 译码器电路如图2-1所示。其功能如表2-1所示。试用VHDL 实现该译码器,并在开发板上进行检验。 表2-1 译码器功能表 EN A B C Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0 1 X X X 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 1 1 3-8 译码器 A B C EN Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 图2-1 3-8译码器

0 1 1 0 0 1 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 2.将程序下载到FPGA并进行检验 (1)资源使用要求:用滑动开关SW3~SW1作为输入A,B,C;滑动开关SW0控制EN;8个LED灯表示8个输出。 (2)检验方法:当SW0处于ON(EN=1)位置时,所有LED灯灭;当SW0处于OFF(EN=0),反映当前输入的译码输出在LED灯上显示,即当输入为000(滑动开关SW3-SW1处于OFF状态),LED0亮,其它灯灭,等等。 四.实验步骤 1.启动ISE,新建工程文件,编写3-8译码器的VHDL模块; 2.新建UCF文件,输入位置约束; 3.完成综合、实现,生成下载文件; 4.连接开发板USB下载线,开启开发板电源; 5.下载到FPGA; 6.拨动开关,验证结果是否正确。 五.主要vhdl代码 architecture Behavioral of coder_38 is --3-8译码器行为级描述signal x:STD_LOGIC_VECTOR (2 downto 0); begin x <= A&B&C;

VHDL实验报告

《创新实验》实验报告 —基于VHDL的编程和硬件实现

一、实验目的 1.熟悉和掌握硬件描述语言VHDL的基本语法及编写; 2.掌握软件Xilinx ISE 10.1的使用; 3.熟悉SDZ-6电子技术实验箱的使用; 4.了解节拍脉冲发生器等基本电路的实现; 5.了解八位二进制计数器的功能与设计; 6.学习键盘和七段数码管显示的控制和设计。 二、实验内容 1.Xilinx ISE 10.1软件的使用; 2.节拍脉冲发生器等基本电路的实现; 3.八位二进制计数器的实现 4.键盘扫描及显示的实现 三、实验器材 1、PC机 2、SDZ-6电子技术实验箱 3、正负5V电源 4、I/O接口线 四、软件的使用 在安装Xilinx10.1软件时,需要一个ID号,其实这个ID号是可以重复使用的,几个同学在官网注册后就可以共享ID号了。 安装完成之后就可以使用这个软件编写相应的VHDL的程序。 1.新建工程 File—>New Project 弹出下面的对话框 输入工程名后单击Next。然后根据本实验的实验箱进行以下设置。

以后的步骤一般都是单击Next(有些资料上会介绍有些这些步骤的具体功能,但对于本实验不必用到),最后单击Finish,完成新建一个工程。在窗口的左边会出现刚刚新建的工程,如下: 2.新建一个VHDL的源文件。 在上图中,右击工程选择New Source ,弹出如下对话框。

在对画框的左边选择VHDL Module,输入文件的名字(改名字最好是你定义的实体的名字)。单击Next。出现下面的对话框。 该对话框主要是对外部端口的编辑。可以直接跳过,即单击Next,在源文件上编辑端口。然后在接下来的对话框中单击Finish。完成建立一个源文件。窗口右边就会出现刚才编辑的源文件。 3.编写和编译代码 将事先编好的代码复制到源文件里,然后保存文件。 选中左边的文件名,在窗体的左边出现如下编辑文档内容。

硬件描述语言及器件实验指导书

硬件描述语言及器件实验指导书 电子科学与技术专业组

第1章实验一用硬件描述语言的方法设计一个三输入与门电 路 一、实验目的 1、掌握MAX+plusII的使用方法。 2、掌握VHDL语言程序的基本结构。 2、掌握使用硬件描述语言设计数字电路的方法和步骤。 3、掌握用硬件描述语言设计三输入与门电路的方法。 二、实验器材 1.台式计算机1台。 2.可编程逻辑逻辑器件实验软件1套。 3.下载电缆一套。 4.示波器一台。 三、实验说明 1.台式计算机用于向可编程逻辑逻辑器件实验软件提供编程、仿真、下载的平台,供用户使用。 2.可编程逻辑逻辑器件实验软件向原理图的设计提供平台,并将调试好的原理图下载到可编程逻辑逻辑器件中。 3.下载电缆是可编程逻辑器件软件和可编程逻辑逻辑器件之间的接口电缆,为了便于区别,用不同颜色导线区分下载电缆的电源、地和信号,一般用红色导线接电源,用黑色导线接地。 4.示波器用于观察可编程逻辑器件执行程序时输出信号的变化。 四、实验内容与要求 用硬件描述语言的方法设计一个三输入与门电路,要求: (1)根据三输入与门的逻辑表达式,在构造体中直接使用并行赋值语句实现,并进行仿真;

(2)根据三输入与门的真值表,在构造体中使用进程语句实现,并进行仿真; 五、实验步骤(下面七个的实验的软件的使用具体步骤跟本次试验一样不再详述) 1.打开新建菜单选择“textedtiorfile”,这个文件是写程序编程用的。 2.程序写完后点“保存”,注意(1)保存的格式是.vhd,(2)保存的地址不能是桌面和硬盘的根目录,否则在后面的编程将出现错误。

3.在file→projectset→projecttocurrentfile,这步是将文件设置在工程里,能够正常编译和下载。

实验3 基于硬件描述语言的电路设计

实验3 基于硬件描述语言的电路设计 一、实验目的 1 、了解可编程数字系统设计的流程; 2 、掌握Quartus II 软件的使用方法; 3 、掌握采用硬件描述语言设计数字系统的方法和流程。 二、实验设备 1、计算机:Quartus II 软件 2、Altera DE0 三、实验内容 要求1:学习并掌握硬件描述语言(VHDL或Verilog HDL);熟悉门电路的逻辑功能,并用硬件描述语言实现门电路的设计。参考“参考内容1”中给出的与门源程序,编写一个异或门逻辑电路。 1)用QuartusII波形仿真验证; 2)下载到DE0开发板验证。 要求2:熟悉中规模器件译码器的逻辑功能,用硬件描述语言实现其设计。参考“参考内容2”中给出的将8421BCD码转换成0-9的七段码译码器源程序,编写一个将二进制码转换成0-F 的七段码译码器。 1)用QuartusII波形仿真验证; 2)下载到DE0开发板,利用开发板上的数码管验证。 要求3:熟悉时序电路计数器的逻辑功能,用硬件描述语言实现其设计。参考“参考内容3”中给出的四位二进制加减计数器的源程序,编写一个计数器。 1)用QuartusII波形仿真验证; 2)下载到DE0开发板验证。 要求4:熟悉分频电路的逻辑功能,并用硬件描述语言实现其设计。参考“参考内容4”中给出的50M分频器的源程序,编写一个能实现占空比50%的5M和50M分频器即两个输出,输出信号频率分别为10Hz和1Hz。 1)下载到DE0开发板验证。(提示:利用DE0板上已有的50M晶振作为输入信号,通过开发板上两个的LED灯观察输出信号)。电路框图如下: 四、实验结果 1、用硬件描述语言(VHDL 或Verilog HDL)实现一个异或门电路。 VHDL源程序: Library ieee; use ieee.std_logic_1164.all;

硬件描述语言HDL的现状与发展

硬件描述语言HDL的现状与发展 摘要:从数字系统设计的性质出发,结合目前迅速发展的芯片系统,比较、研究各种硬件描述语言;详细阐述各种语言的发展历史、体系结构和设计方法;探讨未来硬件描述语言的发展趋势,同时针对国内EDA基础薄弱的现状,在硬件描述语言方面作了一些有益的思考。 关键词:ASIC 硬件描述语言HDL Verilog HDL VHDL SystemC Superlog 芯片系统SoC 引言 硬件描述语言HDL是一种用形式化方法描述数字电路和系统的语言。利用这种语言,数字电路系统的设计可以从上层到下层(从抽象到具体)逐层描述自己的设计思想,用一系列分层次的模块来表示极其复杂的数字系统。然后,利用电子设计自动化(EDA)工具,逐层进行仿真验证,再把其中需要变为实际电路的模块组合,经过自动综合工具转换到门级电路网表。接下去,再用专用集成电路ASIC或现场可编程门阵列FPGA自动布局布线工具,把网表转换为要实现的具体电路布线结构。 目前,这种高层次(high-level-design)的方法已被广泛采用。据统计,目前在美国硅谷约有90%以上的ASIC和FPGA采用硬件描述语言进行设计。 硬件描述语言HDL的发展至今已有20多年的历史,并成功地应用于设计的各个阶段:建模、仿真、验证和综合等。到20世纪80年代,已出现了上百种硬件描述语言,对设计自动化曾起到了极大的促进和推动作用。但是,这些语言一般各自面向特定的设计领域和层次,而且众多的语言使用户无所适从。因此,急需一种面向设计的多领域、多层次并得到普遍认同的标准硬件描述语言。20世纪80年代后期,VHDL和Verilog HDL语言适应了这种趋势的要求,先后成为IEEE 标准。 现在,随着系统级FPGA以及系统芯片的出现,软硬件协调设计和系统设计变得越来越重要。传统意义上的硬件设计越来越倾向于与系统设计和软件设计结合。硬件描述语言为适应新的情况,迅速发展,出现了很多新的硬件描述语言,像Superlog、SystemC、Cynlib C++等等。究竟选择哪种语言进行设计,整个业界正在进行激烈的讨论。因此,完全有必要在这方面作一些比较研究,为EDA设计做一些有意义的工作,也为发展我们未来的芯片设计技术打好基础。 1 目前HDL发展状况 目前,硬件描述语言可谓是百花齐放,有VHDL、Superlog、Verilog、SystemC、Cynlib C++、C Level等等。虽然各种语言各有所长,但业界对到底使用哪一种语言进行设计,却莫衷一是,难有定论。 而比较一致的意见是,HDL和C/C++语言在设计流程中实现级和系统级都具有各自的用武之地。问题出现在系统级和实现级相连接的地方:什么时候将使用中的一种语言停下来,而开始使用另外一种语言?或者干脆就直接使用一种语言?现在看来得出结论仍为时过早。 在2001年举行的国际HDL会议上,与会者就使用何种设计语言展开了生动、激烈的辩论。最后,与会者投票表决:如果要启动一个芯片设计项目,他们愿意选择哪种方案?结果,仅有2

硬件描述语言范例

硬件描述语言语言设计实例 1、8-3编码器 module encode_verilog ( a ,b ); input [7:0] a ; //编码器输入 wire [7:0] a ; output [2:0] b ; //编码器输出 reg [2:0] b; always @ ( a ) begin case ( a ) //编码器某一输入端口为高电平输出相应的3位二进制数 8'b0000_0001 : b<=3'b000; //0 8'b0000_0010 : b<=3'b001; //1 8'b0000_0100 : b<=3'b010; //2 8'b0000_1000 : b<=3'b011; //3 8'b0001_0000 : b<=3'b100; //4 8'b0010_0000 : b<=3'b101; //5 8'b0100_0000 : b<=3'b110; //6 8'b1000_0000 : b<=3'b111; //7 default : b<= 3'b000; //其他情况编码器输出3’b000 endcase end endmodule 2、8-3优先编码器 module p_encode_verilog ( A ,I ,GS ,EO ,EI ); //编码器以低为有效 input [7:0] I ; //编码器输入 wire [7:0] I ; input EI ; //输入使能,EI=0时,编码器正常工作 wire EI ; output [2:0] A ; //编码器输出 reg [2:0] A ; output GS ; //优先编码器工作状态标志,编码器的八个输入端有信号输入时,GS=0 reg GS ; output EO ; //输出使能, reg EO ; always @ ( I or EI ) if ( EI ) //使用if、else if表明条件的优先级顺序 begin A <= 3'b111; GS <= 1; EO <= 1; end else if ( I[7] == 0 ) begin A <= 3'b000;

课程名称FPGA与硬件描述语言

课程名称:FPGA与硬件描述语言 课程编码:7002301 课程学分:2学分 课程学时:32学时 适应专业:电子信息工程、电子信息工程(理工科实验班) 《FPGA与硬件描述语言》 FPGA and Hardware Describing Language 教学大纲 一、课程性质与任务 性质:本课程的授课对象为电子信息工程专业二年级本科生,课程属性为专业基础必修课,该课程讲授FPGA基本原理及结构,先进的硬件描述语言(VHDL语言),FPGA设计与应用等知识。 任务:通过对(VHDL)硬件描述语言,FPGA设计等知识的学习,掌握硬件描述语言,FPGA设计的基本知识。培养学生动手能力以及解决实际问题的能力。理解VHDL语言,学会FPGA设计方法等。 二、课程教学基本内容及要求 第一章绪论VHDL的数据和表达式 (一)教学基本要求: 掌握:VHDL程序的特点,VHDL的数据,VHDL的表达式。 了解:FPGA基本原理及结构。 (二)教学基本内容: 绪论:FPGA基本原理及结构 第一章VHDL的数据和表达式 1.1 VHDL程序的特点 1.2 VHDL程序的基本结构 1.3 VHDL的数据 1.4 VHDL的表达式 第二章VHDL的顺序描述语句 (一)教学基本要求: 掌握:信号赋值语句和变量赋值语句,if语句,case语句,null语句。 理解:loop语句。 (二)教学基本内容:

第二章VHDL的顺序描述语句 2.1信号赋值语句和变量赋值语句 2.2 if语句 2.3 case语句 2.4 loop语句 2.5 null语句 第三章VHDL的并行描述语句 (一)教学基本要求: 掌握:进程语句,并发信号赋值语句,元件例化语句。 理解:条件信号赋值语句,选择信号赋值语句。 了解:生成语句。 (二)教学基本内容: 第三章VHDL的并行描述语句 3.1进程语句 3.2并发信号赋值语句 3.3条件信号赋值语句 3.4选择信号赋值语句 3.5元件例化语句 3.6生成语句 第四章VHDL的时钟信号描述方法 (一)教学基本要求: 掌握:时钟的VHDL描述方法,时序电路中复位信号的VHDL描述方法。(二)教学基本内容: 第四章VHDL的时钟信号描述方法 4.1时钟信号的VHDL描述方法 4.2时序电路中复位信号的VHDL描述方法 第五章VHDL的有限状态机的设计 (一)教学基本要求: 掌握:有限状态机的基本概念及应用。 理解:一个Moore型有限状态机的设计实例 (二)教学基本内容: 第五章VHDL的有限状态机的设计 5.1 有限状态机的基本概念 5.2一个Moore型有限状态机的设计实例

数字电子技术实验报告_基于Quartus II的硬件描述语言电路设计

数字电子技术基础 实验报告 题目:实验四基于Quartus II的硬件描述语言电路 设计 小组成员: 小组成员:

一、实验四基于Quartus II的硬件描述语言电路设 计 一、实验目的 1)学习并掌握硬件描述语言VHDL;熟悉门电路的逻辑功能,并用硬件描述语言 实现门电路的设计。 2)熟悉中规模器件译码器的逻辑功能,用硬件描述语言实现其设计。 3)熟悉时序电路计数器的逻辑功能,用硬件描述语言实现其设计。 4)熟悉分频电路的逻辑功能,并用硬件描述语言实现其设计。 二、实验要求 要求1:参考“参考内容1”中给出的与门源程序,编写一个异或门逻辑电路。1)用QuartusII波形仿真验证;2)下载到DE0开发板验证。 要求2:参考“参考内容2”中给出的将8421BCD码转换成0-9的七段码译码器源程序,编写一个将二进制码转换成0-E的七段码译码器。1)用QuartusII波形仿真验证;2)下载到DE0开发板,利用开发板上的数码管验证。 要求3:参考“参考内容3”中给出的四位二进制计数器的源程序,编写一个计数器实现0-E计数。用QuartusII波形仿真验证; 要求4:参考“参考内容4”中给出的50M分频器的源程序,编写一个能实现占空比50%的5M和50M分频器即两个输出,输出信号频率分别为10Hz和1Hz。下载到DE0开发板验证。(提示:利用DE0板上已有的50M晶振作为输入信号,通过开发板上两个的LED灯观察输出信号)。电路框图如下:

要求5:利用已经实现的VHDL模块文件,顶层文件采用原理图设计方法,实现0-E计数自动循环显示,频率1Hz和10Hz可以切换。(提示:如何将VHDL模块文件在顶层原理图文件中引用,参考参考内容5) 三、实验设备 (1)电脑一台; (2)数字电路实验箱; (3)数据线一根。 四、实验原理 1.VHDL具有功能强大的语言结构,可以用简洁明确的源代码来描述复杂的逻辑控制。它具有多层次的设计描述功能,层层细化,最后可直接生成电路级描述。VHDL支持同步电路、异步电路和随机电路的设计,这是其他硬件描述语言所不能比拟的。VHDL还支持各种设计方法,既支持自底向上的设计,又支持自顶向下的设计;既支持模块化设计,又支持层次化设计。 2.VHDL具有多层次的设计描述功能,既可以描述系统级电路,又可以描述门级电路。而描述既可以采用行为描述、寄存器传输描述或结构描述,也可以采用三者混合的混合级描述。另外,VHDL支持惯性延迟和传输延迟,还可以准确地建立硬件电路模型。VHDL支持预定义的和自定义的数据类型,给硬件描述带来较大的自由度,使设计人员能够方便地创建高层次的系统模型。 3.VHDL是一种标准化的硬件描述语言,同一个设计描述可以被不同的工具所支持,使得设计描述的移植成为可能。 4.VHDL采用基于库(Library)的设计方法,可以建立各种可再次利用的模块。这些模块可以预先设计或使用以前设计中的存档模块,将这些模块存放到库中,就可以在以后的设计中进行复用,可以使设计成果在设计人员之间进行交流和共享,减少硬件电路设计。

硬件描述语言与FPGA技术实验指导书(2012版)

《硬件描述语言与FPGA技术》 实验指导书 西北工业大学 2012/10/10

目录 实验一简单的组合逻辑设计 (3) 实验二简单分频时序逻辑电路的设计 (6) 实验三利用条件语句实现计数分频时序电路 (9) 实验四阻塞赋值与非阻塞赋值的区别 (12) 实验五用always块实现较复杂的组合逻辑电路 (16) 实验六在Verilog中使用函数 (20) 实验七在Verilog HDL中使用任务(task) (23) 实验八利用有限状态机进行时序逻辑的设计 (27) 实验九利用状态机实现比较复杂的接口设计 (32) 练习十利用SRAM设计一个FIFO (39)

实验一简单的组合逻辑设计 一、实验目的 1. 学习Quartus和ModSim两种EDA工具的使用方法; 2.掌握基本组合逻辑电路的实现方法; 3.初步了解两种基本组合逻辑电路的生成方法; 4.学习测试模块的编写; 5.通过综合和布局布线了解不同层次仿真的物理意义。 二、实验内容 本次实验采用Verilog HDL语言设计一个可综合的数据比较器,其功能是比较数据a与数据b的结果,如果两个数据相同,则输出结果1,否则给出结果0;并写出测试模型,使其进行比较全面的测试。 三、实验仪器、设备 预装了开发工具ModelSimSE、synplify的PC机。 四、实验原理 1.组合逻辑电路是指在任何时刻,输出状态只决定于同一时刻各输入状态的组合而与 电路以前状态无关,而与其他时间的状态无关。其逻辑函数如下: Li=f(A1,A2,A3……An) (i=1,2,3…m) 其中,A1~An为输入变量,Li为输出变量。 2.组合逻辑电路的特点归纳如下: ① 输入、输出之间没有返馈延迟通道; ② 电路中无记忆单元。 3.组合逻辑设计示例:可综合的数据比较器。它的功能是比较数据a与数据b,如果 两个数据相同,则给出结果1,否则给出结果0。描述组合逻辑时常使用assign 结构。注意equal=(a==b)?1:0,这是一种在组合逻辑实现分支判断时常使用的格 式。 模块源代码: //--------------- compare.v ----------------- module compare(equal,a,b);

硬件描述语言及FPGA设计复习要点

《硬件描述语言及FPGA设计》复习要点: 一、名词解释 ⑴设计方法:自顶向下和自底向上,以自顶向下为主要设计。 综合:指的是将较高级抽象层次的设计描述自动转化外较低层次的描述过程。 1.EDA :电子设计自动化 2.HDL :硬件描述语言 SoC :系统芯片 4.ASIC :专用集成电路 5.PLD :可编程逻辑器件 6.CPLD :复杂可编程逻辑器件 7.FPGA :现场可编程门阵列 8.LUT :查找表 9.JTAG :联合测试行动组 10.ISP :在系统编程 11.IP核:完成某种功能的设计模块 12.逻辑综合:将设计者在EDA平台上编辑输入的HDL文本、原理图或状态图描述,依据给定的硬件结构和约束控制条件进行编译、优化和转换,最终获得门级电路甚至更底层的电路描述网表文件的过程。 13.设计输入:将设计者所设计的电路以开发软件要求的某种形式表达出来,并输入到相应软件中的过程。 14.下载:把适配后生成的编程文件装入到PLD器件中的过程 15.FSM: 有限状态机 16.UDP:用户自定义 17.NS:次态 18.OL:输出逻辑 二、填空 1.EDA就是以计算机为工作平台,以EDA软件工具为开发环境,以PLD器件或者ASIC专用集成电路为目标器件设计实现电路系统的一种技术。 2.在数字电路设计过程中,综合是将软件转化为硬件电路的关键步骤,是文字描述与硬件实现的一座桥梁。 3.通常,将对CPLD的下载称为编程,对FPGA中的SRAM进行直接下载的方式称配置。 4.仿真时是否考虑硬件延时分类,可分为功能仿真和时序仿真。 5.IP核主要包括硬核、固核和软核。 6.当前最流行的并且成为IEEE标准的硬件描述语言包括Verilog HDL 和VHDL 。7.当前EDA设计中普遍采用的方法是:自顶向下。

VHDL硬件描述语言实验报告

硬件描述语言实验附录 姓名:xxx 学号:xxx 指导教师:xxx 目录 硬件描述语言实验附录 (1) 实验1.三输入与门电路实验 (2) 实验2. 三—八译码器实验 (3) 实验3. D触发器实验 (4) 实验4. 分频器实验 (5) 实验5. 状态机实验 (8)

实验1.三输入与门电路实验 --三输入与门电路threeinput --姓名:王定 --学号:1306034248 --中北大学 LIBRARY IEEE; --调用库 USE IEEE.STD_LOGIC_1164.ALL;--库文件 -------------------------------------------------------------- ENTITY threeinput IS --定义实体名,其名称必须与VHDL文本文件名称相同PORT( A: IN STD_LOGIC; --输入端口,时钟输入 B: IN STD_LOGIC; --输入端口,个位写入使能 C: IN STD_LOGIC; --输入端口,十位写入使能 CO: OUT STD_LOGIC); --输出端口,溢出标志 END ENTITY threeinput; --结束端口定义 -------------------------------------------------------------- ARCHITECTURE RTL OF threeinput IS--定义结构体 BEGIN PROCESS(A,B,C) IS --开始,必须带上 BEGIN CO<=A AND B AND C ; END PROCESS; END ARCHITECTURE RTL; --结束结构体 表1. 三输入与门电路VHDL实验代码 图1. 三输入与门电路仿真波形图,A,B,C输入,CO输出

硬件描述语言HDL的现状与发展

摘要:从数字系统设计的性质出发,结合目前迅速发展的芯片系统,比较、研究各种硬件描述语言;详细阐述各种语言的发展历史、体系结构和设计方法;探讨未来硬件描述语言的发展趋势,同时针对国内eda基础薄弱的现状,在硬件描述语言方面作了一些有益的思考。关键词:asic 硬件描述语言hdl verilog hdl vhdl systemc superlog 芯片系统soc引言硬件描述语言hdl是一种用形式化方法描述数字电路和系统的语言。利用这种语言,数字电路系统的设计可以从上层到下层(从抽象到具体)逐层描述自己的设计思想,用一系列分层次的模块来表示极其复杂的数字系统。然后,利用电子设计自动化(eda)工具,逐层进行仿真验证,再把其中需要变为实际电路的模块组合,经过自动综合工具转换到门级电路网表。接下去,再用专用集成电路asic或现场可编程门阵列fpga自动布局布线工具,把网表转换为要实现的具体电路布线结构。目前,这种高层次(high-level-design)的方法已被广泛采用。据统计,目前在美国硅谷约有90%以上的asic和fpga采用硬件描述语言进行设计。硬件描述语言hdl的发展至今已有20多年的历史,并成功地应用于设计的各个阶段:建模、仿真、验证和综合等。到20世纪80年代,已出现了上百种硬件描述语言,对设计自动化曾起到了极大的促进和推动作用。但是,这些语言一般各自面向特定的设计领域和层次,而且众多的语言使用户无所适从。因此,急需一种面向设计的多领域、多层次并得到普遍认同的标准硬件描述语言。20世纪80年代后期,vhdl和verilog hdl语言适应了这种趋势的要求,先后成为ieee标准。现在,随着系统级fpga以及系统芯片的出现,软硬件协调设计和系统设计变得越来越重要。传统意义上的硬件设计越来越倾向于与系统设计和软件设计结合。硬件描述语言为适应新的情况,迅速发展,出现了很多新的硬件描述语言,像superlog、systemc、cynlib c++等等。究竟选择哪种语言进行设计,整个业界正在进行激烈的讨论。因此,完全有必要在这方面作一些比较研究,为eda设计做一些有意义的工作,也为发展我们未来的芯片设计技术打好基础。 1 目前hdl发展状况目前,硬件描述语言可谓是百花齐放,有vhdl、superlog、verilog、systemc、cynlib c++、c level等等。虽然各种语言各有所长,但业界对到底使用哪一种语言进行设计,却莫衷一是,难有定论。而比较一致的意见是,hdl和c/c++语言在设计流程中实现级和系统级都具有各自的用武之地。问题出现在系统级和实现级相连接的地方:什么时候将使用中的一种语言停下来,而开始使用另外一种语言?或者干脆就直接使用一种语言?现在看来得出结论仍为时过早。在2001年举行的国际hdl会议上,与会者就使用何种设计语言展开了生动、激烈的辩论。最后,与会者投票表决:如果要启动一个芯片设计项目,他们愿意选择哪种方案?结果,仅有2票或3票赞成使用systemc、cynlib和c level 设计;而superlog和verilog各自获得了约20票。至于以后会是什么情况,连会议主持人john cooley也明确表示:“5年后,谁也不知道这个星球会发生什么事情。”各方人士各持己见:为verilog辩护者认为,开发一种新的设计语言是一种浪费;为systemc辩护者认为,系统级芯片soc快速增长的复杂性需要新的设计方法;c语言的赞扬者认为,verilog 是硬件设计的汇编语言,而编程的标准很快就会是高级语言,cynlib c++是最佳的选择,它速度快、代码精简;superlog的捍卫者认为,superlog是verilog的扩展,可以在整个设计流程中仅提供一种语言和一个仿真器,与现有的方法兼容,是一种进化,而不是一场革命。当然,以上所有的讨论都没有提及模拟设计。如果想设计带有模拟电路的芯片,硬件描述语言必须有模拟扩展部分,像verilog hdl-a,既要求能够描述门级开关级,又要求具有描述物理特性的能力。 2 几种代表性的hdl语言2.1 vhdl 早在1980年,因为美国军事工业需要描述电子系统的方法,美国国防部开始进行vhdl的开发。1987年,由ieee(institute of electrical and electro- nics engineers)将vhdl制定为标准。参考手册为ieee vhdl 语言参考手册标准草案1076/b版,于1987年批准,称为ieee 1076-1987。应当注意,起初vhdl只是作为系统规范的一个标准,而不是为设计而制定的。第二个版本是在1993年制定

硬件描述语言实验报告

《硬件描述语言》实验报告 学院: 学号: 姓名: 专业: 实验时间: 实验地点: 指导教师: 年月

实验一简单组合逻辑设计 一、实验目的及要求: 1.掌握基本组合逻辑电路的实现方法。 2.初步了解两种基本组合逻辑电路的生成方法。 3.学习测试模块的编写。 4.通过综合和布局布线了解不同层次仿真的物理意义。 二、实验设备及要求 装有modesim和synplify的电脑一台 三、实验内容与步骤 1.实验内容: 本次实验采用Verilog HDL语言设计一个可综合的数据比较器,其功能是比较数据a与数据b的结果,如果两个数据相同,则输出结果1,否则给出结果0;并写出测试模型,使其进行比较全面的测试。 2.实验步骤: (1)建立工程文件,编写模块源码和测试模块,要求测试模块对源文件进行比较全面的测试; (2)编译源码和测试模块,用测试模块对源文件进行测试,并进行仿真;(3)观察综合后生成的文件和源文件的不同点和相同点。 (4)综合时采用不同的FPGA器件,观察综合后的结果有什么不同。 四、实验结果与数据处理: 1.RTL图及仿真后波形图:

2.综合后的电路图: 五、分析与讨论: 1.课本练习一的测试方法二中,第二个initial块有什么用?它与第一个initial块有什么关系? 答:测试方法二中的第二个initial用来暂停仿真以便观察仿真波形,它与第一个initial是并行关系 2.如果在第二个initial块中,没有写出#10000或者$stop,仿真会如何进行?答:如果没有写#10000,仿真会直接停止,没有$stop,仿真不会结束。

3.比较两种测试方法,哪一种更全面? 答:第二种测试方法更全面,测试了更多种的变换的情况。 实验二简单分频时序逻辑电路的设计 一、实验目的及要求: 1.掌握条件语句在简单时序模块设计中的使用; 2.掌握verilog语句在简单时序模块设计中的使用; 3.学习在Verilog模块中应用计数器; 4.学习测试模块的编写、综合和不同层次的仿真。 二、实验设备及要求 装有modesim和synplify的电脑一台 三、实验内容与步骤: 1.实验内容: (1)使用always块和@(posedge clk)或@(negedge clk)的结构来表述时序逻辑,设计1/2分频的可综合模型。得到如下波形图: (2)对模块进行RTL级仿真、综合后门级仿真,布局布线仿真; 2.实验步骤: (1)建立工程文件,编写模块源码和测试模块,要求测试模块能对源文件进行比较全面的测试。 (2)编译源码和测试模块,用测试模块对源文件进行测试,并综合仿真。得到波形图。 (3)观察综合后生成的文件和源文件的不同点和相同点。

蔡觉平老师西电Verilog-HDL上机大作业(硬件描述语言)-微电子学院

《Verilog HDL 数字集成电路设计原理与应用》上机作业 班级 学号 姓名 题目1:数字集成电路的verilog HDL 描述与仿真 要求: (1) 学习使用Modelsim 设计和仿真软件; (2) 练习教材7.2.1中的例子; (3) 掌握设计代码和测试代码的编写; (4) 掌握测试仿真流程; 解答: 题目2:简述begin-end 语句块和fork-join 语句块的区别,并写出下面信号 对应的程序代码 ******* ******* ******* -J /l :i -3fcEncli_dnillr?gli. -* iai "12] 丄11] J 代刪ten 由」可Itr 手 rlntberidi_d-rillregii.. min * 11] &:o * 12] &:o 51Q SHO I _ i_r JTI_ -Un JTLJ 1J1D nnn 口 □ 口 n n r, i nr n_r H I ooa !j 6ic rLTLTLn 一1厂厂厂 o ■* AeEtbsndh^E^iftr^E * Afr3tben[iT_sniHTejs._ a As3tbehi±]_g*iHTeg3._ J AestbenctLF ilb egk … .noF 览 EQZBl n. EM

解答: (1)begin-end语句块和fork-join 语句块的区别: 1、执行顺序:begin-end语句块按照语句顺序执行,fork-join 语句块所有语句均在同一时刻执行; 2、语句前面延迟时间的意义:beg in-e nd语句块为相对于前一条语句执行结束的时间,fork-joi n 语句块为相对于并行语句块启动的时间; 3、起始时间:begin-end语句块为首句开始执行的时间,fork-join 语句块为转入并行语句块的时间; 4、结束时间:begin-end语句块为最后一条语句执行结束的时间,forkjoin 语句块为执行时间最长的那条语句执行结束的时间; 5、行为描述的意义:begin-end语句块为电路中的数据在时钟及控制信号 的作用下,沿数据通道中各级寄存器之间的传送过程。fork-join 语句块为电 路上电后,各电路模块同时开始工作的过程。 (2)程序代码: Beg in-end 语句: module in itial_tb1 ; reg A,B; in itial beg in A=0;B=1; #10 A=1;B=0; #10 B=1; #10 A=0; #10 B=0; #10 A=1;B=1; end en dmodule Frk-joi n 语句: module wave_tb2; reg A,B; parameter T=10; in itial fork A=0;B=1; #T A=1;B=0; #(2*T) B=1; #(3*T) A=0; #(4*T) B=0; #(5*T) A=1;B=1; joi n en dmodule 题目3.分别用阻塞和非阻塞赋值语句描述如下图所示移位寄存器的电路图 outO outl out2

verilog硬件描述语言历次实验报告

西北工业大学 《硬件描述语言》实验报告 实验一简单组合逻辑设计 (2) 实验二简单分频时序逻辑电路的设计 .............................................. 错误!未定义书签。实验三利用条件语句实现技术分频时序电路.................................... 错误!未定义书签。实验四阻塞赋值与非阻塞赋值的区别 .............................................. 错误!未定义书签。实验五用always块实现较复杂的组合逻辑电路 ............................... 错误!未定义书签。实验六在V erilog HDL中使用函数 .................................................. 错误!未定义书签。实验七在V erilog HDL中使用任务 .................................................. 错误!未定义书签。实验八利用有限状态机进行时序逻辑的设计.................................... 错误!未定义书签。 学院:计算机学院 学号: 姓名: 专业:计算机科学与技术 实验时间: 2011.11 实验地点:实验大楼 指导教师: 西北工业大学 2011 年11 月

实验一简单组合逻辑设计 实验日期:实验成绩:指导老师: 一.实验目的: 1.掌握基本组合逻辑电路的实现方法。 2.初步了解两种基本组合逻辑电路的生成方法。 3.学习测试模块的编写。 4.通过综合和布局布线了解不同层次仿真的物理意义。 二.实验设备: 安装Modelsim-6.5c的PC机。 三.实验内容: 描述一个可综合的数据比较器,比较数据a 、b的大小,若相同,则给出 结果1,否则给出结果0 四.实验代码 module compare(equal,a,b); input a,b; output equal; assign equal=(a==b)?1:0; endmodule `timescale 1ns/1ns module t; reg a,b; wire equal; initial begin a=0; b=0;

硬件描述语言期末复习整理

硬件描述语言期末复习整理 1、EDA:Electronic Design Automation 现代电子设计技术的核心是EDA(Electronic Design Automation)技术。 EDA技术就是依靠功能强大的电子计算机,在EDA工具软件平台上完成电子系统的设计工作。 2、20世纪90年代以来,微电子工艺有了惊人的发展,工艺水平已经达到了深亚微米级(通常把0.8-0.35um称为亚微米,0.25um及其以下称为深亚微米) 3、用EDA技术设计电路可以分为不同的技术环节,每一个环节中必须有对应的软件包或专用的EDA工具独立处理。 4、EDA工具大致可以分为设计输入编辑器、仿真器、HDL综合器、适配器(或布局布线器)以及下载器等5个模块。 一般的设计输入编辑器都支持图形输入和HDL文本输入 图形输入通常包括原理图输入、状态图输入和波形图输入三种常用方法。 5、在EDA技术中仿真的地位非常重要,行为模型的表达、电子系统的建模、逻辑电路的验证以及门级系统的测试,每一步都离不开仿真器的模拟检测。 在EDA发展的初期,快速地进行电路逻辑仿真是当时的核心问题,即使在现在,各个环节的仿真仍然是整个EDA设计流程中最重要、最耗时的一个步骤。因此,仿真器的仿真速度、仿真的准确性和易用性成为衡量仿真器的重要指标。 6、硬件描述语言诞生的初衷是用于设计逻辑电路的建模和仿真 HDL综合器是将硬件描述语言转化为硬件电路的重要工具。 7、HDL综合器的输出文件一般是网表文件,是一种用于电路设计数据交换和交流的工业标准化格式的文件,或是直接用硬件描述语言HDL表达的标准格式的网表文件,或是对应FPGA/CPLD器件厂商的网表文件。 8、电路网表(逻辑图)由元件名N、模型M、输入端信号PI、输出端信号PO四部分组成,是唯一确定电路连接关系的数据结构。即:E=(N,M,PI,PO) 9、常用的编程语言 C、Pascal、Fortran、Basic或汇编语言-算法研究 硬件描述语言-设计和制造硬件逻辑专用电路 10、实时系统不能采用通用计算机系统,自行设计非常轻便小巧的高速专用硬件系统来完成该任务。 11、FPGA-用高密度的FPGA(从几万门、几十万门到几百万门)来构成完成算法所需的电路系统是一种较好的办法。 FPGA是一种通用的器件,它的基本结构决定了对某一种特殊应用,性能不如专用的ASIC 电路。 专用集成电路-利用现成的微处理机IP核或根据某一特殊应用设计的微处理机核(也可以没有微处理机核),并结合专门设计的高速ASIC运算电路,能设计出性能价格比最高的理想数字信号处理系统。 12、传统的设计方法:查用器件手册;选用合适的微处理器和电路芯片;设计面包板和线路板;调试;定型;设计复杂的系统(几十万门以上)极其困难。 13、美国和中国台湾地区逻辑电路设计和制造厂家大都以Verilog HDL为主。 1、可编程逻辑器件(PLD)是一种能将数字系统实现在硬件电路上的设备,即能在现场规

阎石《数字电子技术基础》(第5版)(课后习题 硬件描述语言简介)【圣才出品】

第9章 硬件描述语言简介 9.1 用Verilog HDL 语言的结构描述方式,描述图9-1所示电路的逻辑功能。 图9-1 解:由图9-1可知 Result () A B C =?+Verilog HDL 描述语言为 9.2 用 Verilog HDL 语言实现对题4.6所要设计电路的逻辑功能描述。解:由题4.6的结论可知,所要描述的电路如图9-2所示。 图9-2 Verilog HDL 描述语言为

module control (A,B,C,L,S); input A,B,C; output L,S; wire Bnot; wire T; not G 1(Bnot,B); and G 2(T,Bnot,C); or G 3(S,A,T); buf G 4(L,B); endmodule 9.3 用Verilog HDL 语言描述一个4 选1数据选择器。解:4选1数据选择器的功能如图9-3所示。 图9-3

Verilog HDL描述语言为 module MUX4_to_1 (A,B,C,D,S1,S0,Y,YN); input A,B,C,D,S1,S0; output Y,YN; wire AT,BT; assign AT = S0 ? D : C; assign BT = S0 ? B : A; assign Y = (S1 ? AT : BT); assign YN = ~Y; endmodule 9.4 用Verilog HDL语言描述一个4位超前进位加法器。 解://主模块

//1位全加器模块 //通过A0、B0、CI计算C1 //通过A0、B0、A1、B1和CI计算C2 //通过A0、B0、A1、B1、A2、B2和CI计算C3

相关文档
最新文档