数字电路实验教程——CPLD编程

上传人:ji****72 文档编号:46540944 上传时间:2018-06-27 格式:PDF 页数:8 大小:288.31KB
返回 下载 相关 举报
数字电路实验教程——CPLD编程_第1页
第1页 / 共8页
数字电路实验教程——CPLD编程_第2页
第2页 / 共8页
数字电路实验教程——CPLD编程_第3页
第3页 / 共8页
数字电路实验教程——CPLD编程_第4页
第4页 / 共8页
数字电路实验教程——CPLD编程_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《数字电路实验教程——CPLD编程》由会员分享,可在线阅读,更多相关《数字电路实验教程——CPLD编程(8页珍藏版)》请在金锄头文库上搜索。

1、 组合逻辑电路设计举例组合逻辑电路设计举例: 例1. 8 位带进位端的加法器的设计实例 module adder_8(cout, sum, a, b, cin); input cin; input 7:0 a, b; output cout; output 7:0 sum; assign cout, sum = a + b + cin; endmodule 例2. 比较器的设计实例 module compare(equal, a, b); parametersize = 8; input size-1:0 a, b; output equal; assign equal = (a = b)?1

2、:0; endmodule 例3. 3-8 译码器设计举例 module decoder(out, in); input 2:0 in; output 7:0 out; /输出高电平有效 assign out = 1b1 in; endmodule 下面的例子和课本中的 74138 译码器完全对应: 为了方便描述,程序中将输入 A 和输出 Y 分别用矢量 in 和 out 来表示。 module decoder_138(g1 or g2 or g3 or in or out); / “or” 等效于“,” input 2:0 in; input g1, g2, g3; output 7:0 o

3、ut; reg 7:0 out; always(g1, g2, g3, in) if (!g1 | g2 | g3) out = 8b1111_1111; /g1、g2、g3 为译码使能信号 else begin case(in) 3b000: out = 8b1111_1110; 3b001: out = 8b1111_1101; 3b010: out = 8b1111_1011; 3b011: out = 8b1111_0111; 3b100: out = 8b1110_1111; 3b101: out = 8b1101_1111; 3b110: out = 8b1011_1111; 3b

4、111: out = 8b0111_1111; endcase end endmodule 例4. 多路选择器设计实例 方案一 module mux1(out, a, b, sel); input a, b, sel; output out; assign out = sel ? a : b; endmodule 方案二 module mux2(out, a, b, sel); input a, b, sel; output out; reg out; always(a or b or sel) begin case(sel) 1b1: out = a: 1b0: out = b; Defau

5、lt: out = 1bx; Endcase End endmodule 方案三 module mux3(out, a, b, sel); input a, b, sel; output out; reg out; always(a or b or sel) begin if (sel) out = a; else out = b; end endmodule 时序逻辑电路设计举例时序逻辑电路设计举例: 例1. 触发器设计实例 方案一:简单 D 触发器 module dff1(q, d, clk); input d, clk; output q; reg q; always(posedge c

6、lk) begin q = d; end endmodule 方案二:带异步高电平有效的置位/复位端的 D 触发器 module dff2( q, d, clk, set, reset); input d, clk, set, reset; output q; reg q; always(posedge clk or posedge set or posedge reset); begin if (reset) begin q = 0; end else if (set) begin q = 1; end else begin q = d; end end endmodule 方案三:带同步高

7、电平有效的置位/复位端的 D 触发器 module dff3( q, d, clk, set, reset); input d, clk, set, reset; output q; reg q; always(posedge clk); begin if (reset) begin q = 0; end else if (set) begin q = 1; end else begin q = d; end end endmodule 例2. 锁存器设计实例 方案一: 简单锁存器 module latch1(q, data, clk); input data, clk; output q;

8、assign q = clk ? data : q; endmodule 方案二:简单锁存器 module latch2(q, data, clk); input data, clk; output q; reg q; always (clk or data) begin if (clk ) q = data; end endmodule 方案三: 带置位和复位端的锁存器 module latch3(q, data, clk, set, reset); input data, clk, set, reset; output q; assign = reset ? 0 : ( set ? 1:

9、( clk ? data : q ); endmodule 例 3. 可异步清零、可预置数的模 10 计数器 module cnt10(qout, cout, data, load, cin, clk, rst); input load, cin, clk, rst; input 3:0 data; output 3:0 qout; output cout; reg 3:0 qout; always(posedge clk or negedge rst) begin if(rst) qout = 0; /异步低电平清零 else if(load) qout = data; /同步高电平置数 e

10、lse if(qout = 4d9) qout = 0; else qout = qout + cin; /cin 低位进位级联信号 end assign cout = (qout = 4d9) /进位输出 endmodule 例 4. 分频器(对时钟源进行分频) 利用 CPLD 实验平台上的 11.0592Mhz 产生 1hz 方波的例程 clk 为自 XC95108 第九脚输入的 11.0592Mhz 时钟信号,而经过内部分频后得到的 1hz 方波 从 18 脚输出,驱动外接的 led。 例5. 状态机设计:以课本上 110 序列检测器为例 module fsm_110(clk, x, z

11、); input clk, x; output z; parameterA = 2b00; parameterB = 2b01; parameterC = 2b11; reg 1:0state; assign z = (state = C always(posedge clk); begin case(state) A: if (x=1) state = B; else state = A; B: if (x=1) state = C; else state = A; C: if (x=1) state = C; else state = A; default: state = 2bxx; e

12、nd endmodule 同一个逻辑功能的电路有不同编程方法。一般说来,采用的描述级别越高,设计越容易,但 需要开发软件的支持。 为了直观地说明问题,下面将实验 3-8 几个实验分别用 VerilogHDL 进行实现。 以下例程可根据框图及模块所实现的逻辑功能以下例程可根据框图及模块所实现的逻辑功能,再结合再结合 CPLDCPLD 实验平实验平台的相关输入输出资源确定台的相关输入输出资源确定 CPLDCPLD 实验中的物理约束条件实验中的物理约束条件。 实验实验 3 组合逻辑实验组合逻辑实验 1.两个 8 位二进制数的比较 2.区间数值比较器 实验实验 4 计数译码显示实验计数译码显示实验(6

13、 进制数的计数译码部分) 实验实验 5 单稳单稳电路电路(可重触发和不可重触发) 1. 不可重触发单稳(下降沿触发) 2. 可重触发(下降沿触发) 实验实验 6 抢答器实验抢答器实验 实验实验 7 指示灯电路设计指示灯电路设计 实验实验 8 矩形波占空比测量电路矩形波占空比测量电路 将实验 8 的电路中除了锁相环电路和两个七段数码管裁减掉, 剩下的全部是数字逻辑电 路(注意裁减时两部分的接口) ,将剩下的部分按功能分成以下几个模块(椭圆形部分): 区间数 值比较 器 A1 A2 B OUT 4 4 8 位 数值 比较 器 A B 8 8 big equal small 六 进 制 计 数 器 八段数码管 译 码 器 八 段 数 码 管 f1hz clr seg_data 8 counter 4 单 稳 态 触 发 器 f1hz out trig Key f1hz Led 3 2 组合逻辑 三分频 (状态机1) 2 四分频 (状态机2) 4 其中包括三个相同的模块,根据上述框图自行设计并在相应的 CPLD 模板上实现。 十进制计数器 四位寄存器 八段译码器 十进制计数器 四位寄存器 八段译码器 8 8 4 4 4 4 数 码 管 数 码 管 锁 相 环 74HC4046 被 测 信 号

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号