关于《深入浅出教你玩转FPGA…
来源:互联网 发布:酷派手机移动数据开关 编辑:程序博客网 时间:2024/06/06 02:00
1:num==11只维持一个clk时钟周期。
2:en拉低和num清零是同时的,因为在clk上升沿来之前的那一顺时,en=1,num=11,互相满足要求。
3: req相对en上升沿延迟了一拍,因为采用了边沿提取,相当与加了一个一个D锁存器。
//tx_en脉冲上升沿检测,作为FIFO读使能信号
reg tx_enr1,tx_enr2;
always @(posedge clk or negedge rst_n)
assign fifo232_rdreq = tx_enr1 &~tx_enr2;
4:en也维持一个clk低脉冲时间。
5:数据产生即发生变化,一定要在前一个字符发送完和当前发送字符开始之间的那段高电平之间。
6:一帧发送消耗了10.5个波特率时间+一个clk时钟周期。
发送模块源代码
`timescale 1ns / 1ps
////////////////////////////////////////////////////////////////////////////////
// Company
// Engineer
// Create Date
// Design Name
// Module Name
// Project Name
// Target Device: Cyclone EP1C3T144C8
// Tool versions: Quartus II 8.1
// Description
//
// Revision
// Additional Comments
//
////////////////////////////////////////////////////////////////////////////////
module
inputclk;
input rst_n;
input[7:0] tx_data;
inputtx_start;
input clk_bps;
output rs232_tx;
output bps_start;
output fifo232_rdreq;
//---------------------------------------------------------
regtx_en;
reg[3:0] num;
always @ (posedge clk or negedge rst_n)
assign bps_start = tx_en;
//tx_en脉冲上升沿检测,作为FIFO读使能信号
reg tx_enr1,tx_enr2;
always @(posedge clk or negedge rst_n)
assign fifo232_rdreq = tx_enr1 &~tx_enr2;
//---------------------------------------------------------
reg rs232_tx_r;
always @ (posedge clk or negedge rst_n)
assign rs232_tx = rs232_tx_r;
endmodule
波特率产生模块
`timescale 1ns / 1ps
////////////////////////////////////////////////////////////////////////////////
// Company
// Engineer
// Create Date
// Design Name
// Module Name
// Project Name
// Target Device: Cyclone EP1C3T144C8
// Tool versions: Quartus II 8.1
// Description
//
// Revision
// Additional Comments
//
////////////////////////////////////////////////////////////////////////////////
module uart_speed_select(
inputclk;
input rst_n;
input bps_start;
outputclk_bps;
`define
`define
//----------------------------------------------------------
//----------------------------------------------------------
reg[3:0]cnt;
regclk_bps_r;
// reg[2:0] uart_ctrl;
always @ (posedge clk or negedge rst_n)
always @ (posedge clk or negedge rst_n)
assign clk_bps = clk_bps_r;
endmodule
数据产生模块
module datagene(clk,rst_n,fifo232_rdreq,tx_data);
input clk;
input rst_n;
input fifo232_rdreq;
output reg [7:0] tx_data;
always@(posedg clk,negedge rst_n)
begin
end
endmodule
数据从7开始发送。
- 关于《深入浅出教你玩转FPGA…
- 【FPGA设计大赛】玩转FPGA:iPad2+赛灵思开发板等你拿
- 教你玩转ACDSEE
- 教你玩转TabHost
- 教你玩转HelloWorld
- 亲身感受:教你玩转Gmail!
- 手把手教你玩转ARP包
- 手把手教你玩转ARP包
- 手把手教你玩转ARP包
- 手把手教你玩转ARP包
- 手把手教你玩转ARP包
- 手把手教你玩转ARP包
- 教你玩转 Setup factory 7.0
- 手把手教你玩转ARP
- 玩转Eclipse2--教你快速编码
- 教你玩转Chrome控制面板
- 手把手教你玩转GDB
- 10分钟教你玩转Linux
- 9012三极管引脚图
- 寄存器,触发器,锁存器之间…
- 常规延迟和内嵌延迟
- 关于阻塞赋值和非阻塞赋值的…
- verilog中顺序块和并行块浅…
- 关于《深入浅出教你玩转FPGA…
- VLC源码解析
- 对C语言编程者的Verilog开发…
- 同步串行通信和异步串行通信
- 关于计算机总线的知识
- Linux串口应用开发
- 32位操作系统和64位操作系统
- FPGA中异步时钟下消除亚稳态…
- 二进制码和格雷码的转换方法