《EDA技术》考试重点

13.阻塞赋值非阻塞赋值的特点、区别及使用方法。

非阻塞(non—blocking)赋值方式 ( b<= a):b 的值被赋成新值 a 的操作, 并不是立刻完成的,而是在块结束时才完成;块内的多条赋值语句在块结束时同时赋值;硬件有对应的电路.

阻塞(blocking)赋值方式 ( b = a):b的值立刻被赋成新值 a;完成该赋值语句后才能执行下一句的操作;硬件没有对应的电路,因而综合结果未知.阻塞赋值是在该语句结束是立即完成赋值操作;非阻塞赋值是在整个过程块结束是才完成赋值操作。

阻塞赋值:

1.只有在当前阻塞赋值语句执行完毕后才会执行下一条同类语句。

2.在执行完当前赋值语句后,目标变量的值立即发生改变。

3.阻塞”的含义是指在当前的赋值操作完成前,阻塞(或停止)其他语句的执行。

4.执行完所有阻塞赋值语句后,过程块才能结束。

非阻塞赋值:

1.在当前非阻塞赋值语句执行完毕之前就会执行下一条同类语句。

2.“非阻塞”的含义是指在当前的赋值操作完成前,不会阻塞其他语句的执行。

3.在过程块结束时刻,同时执行所有非阻塞赋值语句的赋值操作。

使用方法:

1.当模型触发器(Fip-fop) 时,使用非阻塞赋值。 
2.当模型锁存器(Latch)时,使用非阻塞赋值。 
3.当模型组合逻辑(使用always块)时,使用阻塞赋值。 
4.当在同个always块中,如果既模型时序逻辑,又模型组合逻辑,那么使用非阻塞赋值。 

4. 软核、固核、硬核的概念

软核:功能经过验证的、可综合的、实现后电路结构总门数在5000门以上的Verilog HDL模型。由软核构成的器件称为虚拟器件。三者中灵活性最高。软核在EDA设计领域指的是综合之前的寄存器传输级(RTL)模型

固核:指在某一种现场可编程门阵列(FPGA)器件上实现的、经验证是正确的、总门数在5000门以上电路结构编码文件.固核在EDA设计领域指的是带有平面规划信息的网表.

硬核:指在某一种专用集成电路(ASIC)工艺的器件上实现的、经验证是正确的、总门数在5000门以上的电路结构版图掩膜。

inleshe什么是always。

always 语句是循环语句,initial 只执行一次.它们不能嵌套。

intial 只能用在仿真中,只在 0 时刻开始执行一次

always 可以用在仿真中也可以用在综合中,只要触发条件满足,就会重复执行其中的语句

功能定义部分

Verilog 的端口模式有三种:输入端口、输出端口、双向端口,对应的端口定义关键词

分别是:input、output、inout

顺序块儿和并行块儿

initial语句在仿真过程中只执行一次。

一个module中可以有多个initial过程块,它们是并行运行的。

Initial过程块常用于测试文件和虚拟模块的编写,用来产生仿真激励信号和记录仿真结果。

2.always语句的执行特点。使用always语句设计组合逻辑和时序逻辑电路需注意的

问题。(敏感信号、赋值类型)。

特点:1.always语句则是不断地重复活动着,直到仿真过程结束。 仿真器监控始终<时序控制>部分的触发条件是否满足,如满足则执行always过程块语句一次;如不满足,则不执行。

2.一个模块中可以有多个always块,它们都是并行运行的。

1.EDA:电子设计自动化

HDL:硬件描述语言

FPGA:现场可编程门阵列

CPLD:复杂可编程逻辑器件

2.常用的可编程器件的种类包括FPGACPLD

3. CPLD 器件的逻辑功能是通过与或功能(/乘积项)结构实现的

FPGA器件的逻辑功能是通过查找表结构实现的。

第2章

1. Verilog HDL模块包括几种?

包括电路模块和测试模块

2.根据抽象层次不同, Verilog电路模型可以分为两大类行为级和描述级 , 5个级别系统级、算法级、RTL级、门级、晶体管级、

3. Verilog 测试模块主要包括几部分内容?

被测电路模块

与被测模块连接的激励信号和响应信号

给激励信号赋值

将响应信号的值显示出来

4.与被测模块 input端口相连的激励信号的数据类型可以是reg类型。 与被测模块inout端

口相连的激励信号的数据类型可以是reg类型。与 被测模块output端口相连的激励信号

的数据类型可以是wire类型

5. 综合的概念是什么?(重点)

Verilog模块(程序)通过计算机上运行的综合软件工具(属EDA软件)把行为描述通过逻辑表达式的中间形式自动转换为结构描述的模块,这个过程叫做综合(Synthesis)。

第3章、第4章

1.使用 Verilog HDL设计电路模块,应包含几部分内容

端口定义、端口I/O属性声明、内部信号定义和功能定义。

2.端口 I/O属性包括几种?

Input端口、output端口、inout端口

4.定义电路模块的功能, 常用哪几种语句?。

assign连续赋值语句、元件例化语句、always过程块语句

5.在 assign连续赋值语句中,赋值语句中被赋值的变量的数据类型必须是wire型。

6. 在always、initial等过程块中, 赋值语句中被赋值的变量的数据类型必须是reg 型。

在过程块中,对变量赋值,可以采用连续赋值和过程赋值。

7.在元件例化语句,与被调用元件端口连接的变量信号的数据类型必须是wire型。 。                                        

9. 如何定义符号常量?。

在Verilog HDL中用parameter来定义常量,即用parameter来定义一个标识符代表一个常量,称为符号常量

10.如何定义和使用memory型变量?

memory型变量的定义:reg [n-1:0] 存储器名 [m-1:0]

例:reg [7:0]  mema [255:0];  //定义了一个有256个8位单元的存储器

reg memb [7:0];  //定义了一个有8个1位单元的存储器

使用memory型变量:

1.在同一个数据类型声明语句里,可以同时定义存储器型数据和reg型数据。

2.当表示数组的某个单元时,允许使用变量来表示单元的索引.

3.但表示一个向量的一位或几位时,只允许使用常量来表示位的索引。

4.使用数组时,一次只能对一个单元进行操作,不能对数组整体操作。

第6章、第7章

1. initial 语句的执行特点

initial语句在仿真过程中只执行一次。

一个module中可以有多个initial过程块,它们是并行运行的。

Initial过程块常用于测试文件和虚拟模块的编写,用来产生仿真激励信号和记录仿真结果。

2.always语句的执行特点。使用always语句设计组合逻辑和时序逻辑电路需注意的问题。(敏感信号、赋值类型)。

特点:1.always语句则是不断地重复活动着,直到仿真过程结束。 仿真器监控始终<时序控制>部分的触发条件是否满足,如满足则执行always过程块语句一次;如不满足,则不执行。

2.一个模块中可以有多个always块,它们都是并行运行的。

注意:

边沿触发的always块用于描述时序逻辑。

电平触发的always块用来描述组合逻辑。

触发信号可以是单个信号也可以是多个信号,当有多个信号时中间需要用关键字“or”或“,”隔开。

对于组合逻辑电路,需要将所有输入信号列入敏感列表。

为了简便,可以使用两种简化方法书写:@*  和 @(*)

除了使用符号@和敏感列表来表示,Verilog中也可以采用另外一种表示电平敏感时序控制的方法:wait。

当wait()语句中的信号为真时,执行其后的语句,否则不执行。

第9章

1.电路模块的门级结构描述方法。

调用系统的门级关键字(多输入门、多输出门、三态门)

多输入门and(与门) nor(或非门) nand(与非门) xor(异或门) or(或门)xnor(同门)

多输出门 not(非门) buf(缓冲门)

三态门bufifl,bufif0,notifl,notif0(三态门)

第10章、第12章、第13章

  1. 简单的组合逻辑电路的设计方法。能用always设计简单的组合逻辑电路。

2.流水线设计方法的优点

(提高了组合逻辑的数据吞吐量和处理速度)、设计方法(①划分级别,②在每-级后面加寄存器组,③寄存器组受同步时钟控制,时钟周期要大于每一级组合逻辑的延时)

4.同步有限状态机的种类,常用的状态编码的种类和特点。

Mealy状态机、Moore状态机

.利 用 有 限 状 态 机 , 以 格 雷 码 编 译 方 式 设 计 一 个 从 输 出 信 号 序 列 中 检 测出 出 1 10 01 1 信 号 的 电 路图 , 其 方 块 图 、 状 态 图 和 状 态 表 如 图 表 示.

module melay(clk,Din,reset,Qout);

input clk,reset;

input Din;

output Qout;

reg Qout;

parameter[1:0] S0=2’b00,S1=2'b01,S2=2'b11;

reg[1:0] CS;

reg[1:0] NS;

always @(posedge clk or posedge reset)

begin

if(reset==1'b01)

CS=S0;

else CS=NS;

end

always @(CS or Din)

begin

case(CS)

S0:beign

if(Din==1'b0)

begin

NS=S0;

Qout=1'b0;

end

else

begin

NS=S1;

Qout=1’b0;

end

end

S1:begin

if(Din==1’b0)

begin

NS=S2;

Qout=1’b0;

end

else

begin

NS=S1;

Qout=1’b0;

end

end

S2:beign

if(Din==1’b0)

begin

NS=S0;

Qout=1'b0;

end

else

begin

NS=S1;

Qout=1’b0;

end

end

endcase        

end  

endmodule

1 1 、 设 计 一 奇 偶 校 验 位 生 成 电 路 , 输 入 八 位 总 线 信号 号 b bu us s , 输 出 及 校 验位 位 o od dd d , 偶 校 验 位

e ev ve en n. .( (6 6 分) )

module parity(even,odd,bus);

output even,odd;

input[7:0] bus; //奇同偶异

assign even=^bus;//偶校验用异或

assign odd=^~bus;//奇校验用同或

endmodule

2 2 、 设 计 一 个 带 复 位 端 且 对 输 入 时钟 钟 c cl lk k 进 行 二 分 频 模 块 , 并 画 出 仿 真 波 形. .( (9 9 分) )

设 计 要 求 : 复 位 信 号 为 同 步 、 高 电 平 有 效, , 时 钟 的 下 降 沿 触 发

module m2(out,clk,reset);

input reset,clk;

output out;

reg out;

always @(negedge clk)

begin

if(reset)

out<=0;

else

out〈=~out;

end

endmodule

3 3 、 设 计 一 带 异 步 复 位 端 、 异 步 置 数 段 ( 低 电 平 有 效 ) 的 四 位 加 法 计 数 器 , 时钟 钟 c cl lk k 上 升 沿

有 效) ) , 复 位 信号 号 c cl lr r, , 置 数 信号 号 l lo oa ad d 、 输 入 数据 据 d da at ta a 、 输出 出 q qo ou ut t. . 并 画 出 仿 真 波 形。 。 (2 20 0

分) )

module adder_4(qout,clr,clk,load,data);

output[3:0] qout;

input[3:0] data;

input load,clr,clk;

reg[3:0] qout;

always @(posedge clk or negedge load or negedge clk)

begin

if(!load)

qout〈=data;

else if(!clr)

qout〈=0;

else qout〈=qout+1;

end

endmodule

仿真波形

4. 设计 计 9 9 人 表 决 器

module voter9(pass,vote);

output pass;

input[6:0] vote;

reg[2:0] sum;

integer i;

reg pass;

always @(vote)

begin

sum=0;

for(i=0;i<=8;i=i+1) //for 语句

if(vote[i]) sum=sum+1;

case(sum)

5,6,7,8,9: pass=1;

default: pass=0;

endcase

endmodule

5. 设 计 一个 个 8 8 位 计 数 器 , 要 求 异 步 复 位 , 下 降 沿 有 效 。

module count8(out,clk rst_);

output[7:0] out;

input clk, rst_;

reg [7:0]out;

always @(posedge clk or negedge rst_)

if(!rst_)

out <= 8’h0;

else

out <= out+1;

endmodule

.

根 据 下 列 给 定 的 仿 真 输 入 输 出 波 形图 图 2 2, , 说 明 完 成 此 功 能 的 电 路 是 什 么 功 能 电 路? ? 并 写 出

对 应的 的 V Ve er ri il lo og g H HD DL L 描 述 程 序 (

4 进制加法计数器

module counter(clk,clr,q,c)

input clk,clr;

output ret[1:0] q;

output c;

always@(posedge clk or negedge clr)

begin

if(~clr) q<=2’h0;

else

begin

if(2’h3==q) q〈=2'h0;

else q<=q+2’h1;

end

end

assign c=(2’h3==q)

endmodule

7 7。 。 设 计 一 个 带 有 异 步 复 位 控 制 端 和 时 钟 使 能 控 制 端 的1 10 0 进 制 计 数 器。 。 端 口 设 定 如 下: : 输

入 端 口: :C CL LK K: : 时 钟 ,R RS ST T : 复 位 端 ,E EN N : 时 钟 使 能 端 ,L LO OA AD D : 置 位 控 制 端, , D DI IN N : 置 位 数 据

端 ; 输 出 端 口 :C CO OU UT T: : 进 位 输 出 端 ,D DO OU UT T : 计 数 输 出 端 。

module cnt10 (clk,rst,en,loat,cout,dout,data);

input clk ;

input en ;

input rst ;

input load ;

input [3:0] data ;

output [3:0] dout ;

output cout ;

reg [3:0] q1 ;

reg cout ;

assign dout = q1;

always @(posedge clk or negedge rst) begin

if (!rst) q1 <= 0;

else if (en)

begin

if (!loat) q1 <= data;

else if (q1<9) q1 <= q1+1;

else q1 <= 4'b0000;

end

end

always @(q1)

if (q1==4'h9) cout = 1’b1;

else cout = 1'b0;

endmodule

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱吃泡芙_呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值