- 博客(0)
- 资源 (6)
- 收藏
- 关注
Uart RS232 VerilogFGPA实现
Uart RS232 Verilog FGPA实现 带testbench,实现了串口数据接受口接收一个字节数据后将这一个字节通过输出发送出去,更详细的看读写模块
顶级模块如下:
module UartRs232(clk50M, resetKey, uTx, uRx);
`include "infoDefine.v"
input clk50M;
input resetKey;
input uRx; //接受数据
output uTx; //发送数据
wire uTx;
wire [7:0]readNum;
wire readOkClk, writeOkClk;
reg [15:0]clkCount; //最小细分频计数器
reg minUartClk; //细分频时钟
//实时读取数据
UartRead myUartRead(.minUartClk(minUartClk), .resetKey(resetKey),
.uRx(uRx), .readNum(readNum), .readOkClk(readOkClk));
//将读到的数据从发送口发出去
UartWrite myUartWrite(.minUartClk(minUartClk), .resetKey(resetKey),
.writeStart(readOkClk), .uTx(uTx), .writeNum(readNum), .writeOkClk(writeOkClk));
//产生对应波特率时钟
always @(posedge clk50M or negedge resetKey)
begin
if (~resetKey)
begin
clkCount <= 16'd0;
minUartClk <= 1'b0;
end
else if (clkCount >= `UCLK_COUNT-1'b1)
begin
clkCount <= 16'd0;
minUartClk <= 1'b1;
end
else
begin
clkCount <= clkCount + 1'b1;
minUartClk <= 1'b0;
end
end
endmodule
2015-10-15
IIC总线 Verilog FGPA模块实现 注释详尽 初学必备
IIC总线 Verilog FGPA模块实现 注释详尽 初学必备,实现了IIC读写EEPROM,已封装成模块,实例中为了testbench测试,将写入的数据变成了固定值,注释详尽,初学者也能明白,本人初学时编写,完整测试通过
/***
* clk50M : 50M输入时钟
* resetKey : 复位信号
* IIC_SDA : IIC数据接口
* IIC_SCL : IIC控制时钟接口
* RWSignal : 读写信号,读1,写0
* startSignal : 开始执行读命令信号,上升沿触发开始
* readLen : 需要读取的字节个数
* beginAddr : 开始读取的地址位置
* getNum : 当前对应地址获取到的字节值
* sendNum : 要写入的数据
* dpDataOkClk : 成功读处理完一个字节信息,读或写,将产生一个上升沿
*/
//`MINCLK_DELAY产生一次计数,产生12次计数可以产生一次IIC_SCL信号的跳变
//50M/2/2/MINCLK_DELAY/12 = IIC_CLK
`define MINCLK_DELAY 4'd5
`define EEPROM_ADDR 7'b1010000
`define SDA_SENDDATA 1'b1
`define SDA_GETDATA 1'b0
`define READE_DATASG 1'b1
`define WRITE_DATASG 1'b0
module IICTest0(clk50M, resetKey, IIC_SDA, RWSignal, startSignal, beginAddr, IIC_SCL, sendNum, getNum, dpDataOkClk);
2015-10-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人