《数字逻辑电路》实验四 时序逻辑电路设计(一)
目录
一、实验目的
通过实验掌握RS、D触发器、寄存器和分频器的设计。
二、实验内容
(1)采用Verilog HDL 程序,设计RS触发器 rsff,clk 上升沿有效,并下载测试;(见2.5.1)
(2)采用Verilog HDL程序,设计一个带有异步清零和 wen 写使能端的 D 触发器 dffe,并下载测试;(见2.5.3)
(3)利用 Verilog HDL 语言的结构描述法,使用(2)设计的带有异步清零和 wen 使能端的 D 触发器组成 8 位寄存器 reg8,下载到板验证;(见2.6.2)
(4)使用 Verilog HDL 实现一个分频器 clock_div,输入的是系统提供的 100MHz 频率,输出的是 1Hz 频率,占空比是 1:2,(实际上可以用一个加 1 计数器来实现降频,输入的是一个 100MHz 频率的方波,对这 个方波计数 1 亿次刚好到 1 秒(1Hz),题目要求输出频率占空比是 1:2,也就是这个 1Hz 的 方波高电平和低电平各 500ms,可以采用计数到中间值的时候输出电平翻转。请大家考虑具 体实现方法。)并下载测试。(2.7.1)
三、代码与截图
源代码1:rsff_204.v
`timescale 1ns / 1ps
//
module rsff_204(
input clk,
input r,
input s,
output reg q,
output qn
);
assign qn = ~q;
always @(posedge clk)
begin
if (~r && ~s) // 如果R和S同时为0,则保持不变
q <= q;
else if (r) // 如果只有R为1,则复位为0
q <= 0;
else if (s) // 如果只有S为1,则置位为1
q <= 1;
end
endmodule
测试代码1:rsff_204_sim.v
`timescale 1ns / 1ps
//
module rsff_204_sim( );
//input
reg clk = 0, r =0, s = 1;
// output
wire q,qn;
rsff_204 U (.clk(clk),.r(r),.s(s),.q(q),.qn(qn));
initial begin
#50 s = 0;
#50 r = 1;
end
always #10 clk = ~clk;
endmodule
引脚约束1:rsff_204.xdc
set_property IOSTANDARD LVCMOS33 [get_ports clk]
set_property IOSTANDARD LVCMOS33 [get_ports q]
set_property IOSTANDARD LVCMOS33 [get_ports qn]
set_property IOSTANDARD LVCMOS33 [get_ports r]
set_property IOSTANDARD LVCMOS33 [get_ports s]
set_property PACKAGE_PIN P4 [get_ports clk]
set_property PACKAGE_PIN A21 [get_ports q]
set_property PACKAGE_PIN E22 [get_ports qn]
set_property PACKAGE_PIN R4 [get_ports r]
set_property PACKAGE_PIN W4 [get_ports s]
set_property CLOCK_DEDICATED_ROUTE FALSE [get_nets clk_IBUF]
仿真截图1:
引脚锁定截图:
运行完成:
源代码2:dffewen_204.v
`timescale 1ns /