用VHDL实现串口控制器
来源:互联网 发布:如何清除手机淘宝缓存 编辑:程序博客网 时间:2024/05/18 00:33
本设计是实现带有接收和发送数据缓冲FIFO的UART。串口的输出只有发送和接收,没有相关的MODEM控制器的设计。整个串口控制器的的设计分为三大部分,分别为串口核心控制模块,串口发送模块和串口接收模块。核心控制模块与发送,接收模块的数据交互采用FIFO的形式,即向FIFO中送数或者从FIFO中读数即可,其他的控制线如下所示。
U1: uart_ctl
Port map (
reset => reset,--global reset ,active high
pld_clk => pld_clk,--66MHz,local bus clock
uart_clk =>uart_clk, --14.7546MHz extern clock,
--local bus signals
ldata => ldata,
madd => madd,
cs => cs,
rd => rd,
irq => irq,
wr => wr,
--UART module data control
stopbits => stopbits,
databits => databits,
parityenable => parityenable,
parityeven => parityeven,
thre => thre,
temt => temt,
--send fifo interface
--fifo port
send_reset => send_reset,
send_din=> send_din,
send_wr_en => send_wr_en,
send_wr_data_count => send_wr_data_count,
send_wr_clk => send_wr_clk,
send_full=> send_full,
send_empty => send_empty,
send_overflow => send_overflow,
--receive fifo interface
--fifo interface
recv_reset => recv_reset,
recv_rd_clk => recv_rd_clk,
recv_rd_en => recv_rd_en,
recv_dout => recv_dout,
recv_wr_data_count => recv_wr_data_count,
recv_empty => recv_empty,
recv_full => recv_full,
recv_overflow => recv_overflow,
--send and receive module clock
clk16x => clk16x
);
在串口核心控制模块中主要是实现主机对串口寄存器的访问,控制发送和接收模块,根据寄存器DLL和DLM实现对uart_clk的分频。
U2: send
port map(
reset => send_reset,
clk16x => clk16x,
--transmit output
sout => uart_tx,
--transmit module control
stopbits => stopbits,
databits => databits,
parityenable => parityenable,
parityeven => parityeven,
thre => thre,
temt => temt,
--fifo port
din=> send_din,
wr_en => send_wr_en,
wr_data_count => send_wr_data_count,
wr_clk => send_wr_clk,
full=> send_full,
empty => send_empty,
overflow => send_overflow);
发送控制模块是将FIFO里面的数据通过串口的发端发送出去,输出为thre,temt和uart_tx;
U3: uart_recv
port map(
--global reset and clock
reset => recv_reset,
clk16x => clk16x,
--input of receive module
sin => uart_rx,
--receive module control
databits => databits,
parityenable => parityenable,
parityeven => parityeven,
--fifo interface
rd_clk => recv_rd_clk,
rd_en => recv_rd_en,
dout => recv_dout,
wr_data_count => recv_wr_data_count,
empty => recv_empty,
full => recv_full,
overflow => recv_overflow);
接收模块是将收到的数据安装UART的格式解析,将收到的数写到FIFO中去。
- 用VHDL实现串口控制器
- SDRAM控制器的设备与VHDL实现
- 用vhdl语言实现寄存器
- 串口通信--VHDL
- 串口通讯控制器实现之----发送模块
- VHDL 键盘扫描程序,用状态机实现
- 关于交通灯控制器的VHDL代码设计
- SPI的VHDL实现
- VHDL实现加法器
- UART的VHDL实现
- FPGA设计中RS232串口的Verilog实现(TX控制器)
- FPGA设计中RS232串口的Verilog实现(RX控制器)
- FPGA实现串口与iic控制器总结(1)
- FPGA实现串口与iic控制器总结(2)
- FPGA实现串口与iic控制器总结(3)
- 串口通信 UART通信之VHDL描述
- FPGA/CPLD控制串口(VHDL版)
- 串口通信 UART通信之VHDL描述
- 公共对象平台:Common Object Platform(COP)
- 新的blog地址
- ultraedit 空格替换
- TinyMCE中的插入图片
- boost::format
- 用VHDL实现串口控制器
- lexical_cast
- 关于HP 联想等品牌机不能用ghost安装系统的解决办法!
- 西门子PPI通讯协议
- java String
- 一位真正的男子汉
- linux 修改root密码
- 对php中类中函数的作用域的理解
- 条款20:为指针的关联容器指定比较类型——effective STL