基于CYCLONE2 FPGA设计的频率计+串口通信实验quartus9.0工程源码+文档说明资料, /******************************************************************************* ** 文件名称:uart.v ** 功能描述:串口通信__FPGA和上位机通信(波特率:9600bps,10个bit是1位起始位,8个数据位,1个结束) *******************************************************************************/ module uart( clk, rst, rxd, txd, start, data_cnt, count1, count2, count3, count4, count5, count6, count7, count8, send_finish ); input clk; //系统50MHZ时钟 input rst; //复位 input rxd; //串行数据接收端 output txd; //串行数据发送端 input start; //开始采集信号 input[3:0] data_cnt; //数据位标志 output send_finish; //发送完成标志 input [7:0] count1; input [7:0] count2; input [7:0] count3; input [7:0] count4; input [7:0] count5; input [7:0] count6; input [7:0] count7; input [7:0] count8; reg[15:0] div_reg; //分频计数器,分频值由波特率决定。分频后得到频率8倍波特率的时钟 reg[2:0] div8_tras_reg; //该寄存器的计数值对应发送时当前位于的时隙数 reg[3:0] state_tras; //发送状态寄存器 reg clkbaud_tras; //以波特率为频率的发送使能信号 reg clkbaud8x; //以8倍波特率为频率的时钟,它的作用是将发送或接受一个bit的时钟周期分为8个时隙 reg trasstart; //开始发送标志 reg send_finish; reg txd_reg; //发送寄存器 reg[7:0] rxd_buf; //接受数据缓存 reg[7:0] txd_buf; //发送数据缓存 reg[3:0] send_state; //发送状态寄存器 parameter div_par=16'h145; //分频参数,其值由对应的波特率计算而得,按此参数分频的时钟频率是波倍特率的8 //倍,此处值对应9600的波特率,即分频出的时钟频率是9600*8 (CLK50M) assign txd = txd_reg; // assign send_state=data_cnt; /*******分频得到8倍波特率的时钟*********/ always@(posedge clk ) begin if(!rst) div_reg<=0; else begin if(div_reg==div_par-1'b1) div_reg<=0; else div_reg<=div_reg+1'b1; end end always@(posedge clk) begin if(!rst) clkbaud8x<=0; else if(div_reg==div_par-1'b1) clkbaud8x<=~clkbaud8x;//分频得到8倍波特率的时钟:clkbaud8x end // *******************************/ always@(posedge clkbaud8x or negedge rst)//clkbaud8x
基于cyclone2 fpga的任意波形发生器VHDL设计QUARTUS工程文件+文档说明: library IEEE; use IEEE.std_logic_1164.all; use IEEE.std_logic_unsigned.all; use IEEE.std_logic_arith.all; entity DDS_top is port ( clk:in std_logic; --内部时钟 reset:in std_logic; --复位信号 key5 sclk:out std_logic; --TLC5615 sclk时钟脚 din:out std_logic; --TLC5615 din数据脚 cs:out std_logic; --TLC5615 cs片选 set_waveform_key_in:in std_logic; --波形设置按键 key1 set_f_key_in:in std_logic; --频率设置按键 key2 set_a_key_in:in std_logic; --幅值设置按键 key3 set_p_key_in:in std_logic; --相位设置按键 key4 sin_data:out std_logic_vector(9 downto 0) --输出的波形数据,用于测试 ); end DDS_top; architecture behave of DDS_top is signal set_waveform_line:std_logic_vector(1 downto 0); signal f_control_line:std_logic_vector(20 downto 0); signal a_control_line:std_logic_vector(3 downto 0); signal p_control_line:std_logic_vector(9 downto 0); signal dds_data_out_temp:std_logic_vector(9 downto 0); signal set_waveform_key:std_logic; signal set_f_key:std_logic; signal set_a_key:std_logic; signal set_p_key:std_logic; --DDs模块 component DDS is port( clk:in std_logic;--时钟输入 dds_data_out:out std_logic_vector(9 downto 0);--DDS数据输出 set_waveform:in std_logic_vector(1 downto 0);--设置输出的波形 set_f:in std_logic_vector(20 downto 0);--设置频率 set_a:in std_logic_vector(3 downto 0);--设置幅值 set_p:in std_logic_vector(9 downto 0)--设置频率 ); end component; -- DAC驱动模块 component TLC5615 is port( CLK:IN STD_LOGIC; SCLK:OUT STD_LOGIC; DIN:OUT STD_LOGIC; CS:OUT STD_LOGIC; DATA_IN:IN STD_LOGIC_VECTOR(9 DOWNTO 0) ); end component; -- 按键消抖模块 component key is port( clk:in std_logic; key:in std_logic; key_out:out std_logic ); end component; -- 按键编码模块 component key_coding i
Cyclone2 FPGA读写SRAM IS61LV25616 实验Verilog逻辑源码Quartus工程文件 module SRAM_TEST ( //input input sys_clk , //system clock; input sys_rst_n , //system reset, low is active; //output inout [15:0] SRAM_DQ , output reg [17:0] SRAM_ADDR , output reg SRAM_CE , output reg SRAM_OE , output reg SRAM_WE , output reg SRAM_UB , output reg SRAM_LB , output reg [ 7:0] LED ); //Reg define reg [3:0] div_cnt ; reg sram_clk ; reg [5:0] ctrl_cnt ; reg [15:0] sram_data_lck ; reg [15:0] sram_din ; //Wire define //************************************************************************************ //** Main Program //** //************************************************************************************ // counter used for div osc clk to sram ctrl clk 50M/16 always @(posedge sys_clk or negedge sys_rst_n) begin if (sys_rst_n ==1'b0) div_cnt <= 4'b0; else div_cnt <= div_cnt + 4'b1; end //gen sram_clk always @(posedge sys_clk or negedge sys_rst_n) begin if (sys_rst_n ==1'b0) sram_clk <= 1'b0 ; else if ( div_cnt <= 4'd7 ) sram_clk <= 1'b1 ; else sram_clk <= 1'b0 ; end // sram ctrl signal gen // ctrl_cnt 0 - 31 is for write ctrl // ctrl_cnt 31 - 63 is for read ctrl always @(posedge sram_clk or negedge sys_rst_n) begin if (sys_rst_n ==1'b0) ctrl_cnt <= 6'b0; else ctrl_cnt <= ctrl_cnt + 6'b1; end always @(posedge sram_clk or negedge sys_rst_n) begin if (sys_rst_n ==1'b0) SRAM_ADDR <= 18'b0; else if ( ctrl_cnt
Cyclone2 FPGA读写FLASH SST39VF1601 实验Verilog逻辑源码Quartus工程文件 module FLASH_TEST ( //input input sys_clk , //system clock; input sys_rst_n , //system reset, low is active; //output inout [15:0] FLASH_DQ , output reg [20:0] FLASH_ADDR , output reg FLASH_CE , output reg FLASH_OE , output reg FLASH_WE , output reg FLASH_RST , output reg [ 7:0] LED ); //Reg define reg [3:0] div_cnt ; reg flash_clk ; reg [31:0] wait_cnt ; reg [5:0] ctrl_cnt ; reg [15:0] flash_data_lck ; reg [15:0] flash_din ; //Wire define //************************************************************************************ //** Main Program //** //************************************************************************************ // counter used for div osc clk to flash ctrl clk 50M/16 , one flash ctrl clk cycle is 330ns always @(posedge sys_clk or negedge sys_rst_n) begin if (sys_rst_n ==1'b0) div_cnt <= 4'b0; else div_cnt <= div_cnt + 4'b1; end //gen flash_clk always @(posedge sys_clk or negedge sys_rst_n) begin if (sys_rst_n ==1'b0) flash_clk <= 1'b0 ; else if ( div_cnt <= 4'd7 ) flash_clk <= 1'b1 ; else flash_clk <= 1'b0 ; end // flash ctrl signal gen // read FLASH devid need 5 step : // ctrl_cnt 10 - 13 is write oxaa in addr 0x5555 // ctrl_cnt 14 - 17 is write ox55 in addr 0x2aaa // ctrl_cnt 18 - 21 is write ox90 in addr 0x5555 // ctrl_cnt 22 -30 is wait time for TIDA // ctrl_cnt 31 -34 is read manId in addr 0 // ctrl_cnt 35 -38 is read devid in addr
Cyclone2 FPGA读写DAC_TLC5620实验Verilog逻辑源码Quartus工程文件 module DA_TLC5620 ( //input input sys_clk , //system clock; input sys_rst_n , //system reset, low is active; //output output reg DA_IO_CLK , output reg DA_LOAD , output reg DA_LDAC , output reg DA_OUT_DATA , output reg [7:0] LED ); //Reg define reg [6:0] div_cnt ; reg da_clk ; reg [4:0] ctrl_cnt ; reg [15:0] delay_cnt ; reg [ 7:0] analog_data ; //Wire define //************************************************************************************ //** Main Program //** //************************************************************************************ // counter used for div osc clk to da ctrl clk 50M/64 = 0.78Mhz always @(posedge sys_clk or negedge sys_rst_n) begin if (sys_rst_n ==1'b0) div_cnt <= 6'b0; else div_cnt <= div_cnt + 6'b1; end //gen da_clk always @(posedge sys_clk or negedge sys_rst_n) begin if (sys_rst_n ==1'b0) da_clk <= 1'b0 ; else if ( div_cnt <= 6'd31 ) da_clk <= 1'b1 ; else da_clk <= 1'b0 ; end // da ctrl signal gen // ctrl_cnt 0 - 32 is for da ctrl always @(posedge da_clk or negedge sys_rst_n) begin if (sys_rst_n ==1'b0) ctrl_cnt <= 5'b0; else ctrl_cnt <= ctrl_cnt + 5'b1; end always @(posedge da_clk or negedge sys_rst_n) begin if (sys_rst_n ==1'b0) DA_IO_CLK <= 1'b0; else if ( ctrl_cnt == 5'd6 || ctrl_cnt == 5'd8 || ctrl_cnt == 5'd10 || ctrl_cnt == 5'd12 || ctrl_cnt == 5'd14 || ctrl_cnt == 5'd16 || ctrl_cnt == 5'd18 || ctrl_cnt == 5'd20 || ctrl_cnt == 5'd22 || ctrl_
Cyclone2 FPGA读写 ADC_TLC549实验Verilog逻辑源码Quartus工程文件, module AD_TLC549 ( //input input sys_clk , //system clock; input sys_rst_n , //system reset, low is active; input AD_IO_DATA , //output output reg AD_IO_CLK , output reg AD_CS , output reg [7:0] LED ); //Reg define reg [6:0] div_cnt ; reg ad_clk ; reg [4:0] ctrl_cnt ; reg [7:0] ad_data_shift ; //Wire define //************************************************************************************ //** Main Program //** //************************************************************************************ // counter used for div osc clk to ad ctrl clk 50M/64 = 0.78Mhz always @(posedge sys_clk or negedge sys_rst_n) begin if (sys_rst_n ==1'b0) div_cnt <= 6'b0; else div_cnt <= div_cnt + 6'b1; end //gen ad_clk always @(posedge sys_clk or negedge sys_rst_n) begin if (sys_rst_n ==1'b0) ad_clk <= 1'b0 ; else if ( div_cnt <= 6'd31 ) ad_clk <= 1'b1 ; else ad_clk <= 1'b0 ; end // ad ctrl signal gen // ctrl_cnt 0 - 32is for ad ctrl always @(posedge ad_clk or negedge sys_rst_n) begin if (sys_rst_n ==1'b0) ctrl_cnt <= 5'b0; else ctrl_cnt <= ctrl_cnt + 5'b1; end always @(posedge ad_clk or negedge sys_rst_n) begin if (sys_rst_n ==1'b0) AD_IO_CLK <= 1'b0; else if ( ctrl_cnt == 5'd6 || ctrl_cnt == 5'd8 || ctrl_cnt == 5'd10 || ctrl_cnt == 5'd12 || ctrl_cnt == 5'd14 || ctrl_cnt == 5'd16 || ctrl_cnt == 5'd18 || ctrl_cnt == 5'd20 ) // ad clk low AD_IO_CLK <= 1'b1; else AD_IO_CLK <= 1'b0; end always @(posedge ad_clk or negedge sys_rst
基于cyclone2 FPGA设计Verilog实现4位电子密码锁并数码管显示quartus13.0工程文件
RTL8208B_BCM5421S千兆网cyclone2 FPGA主控板protel99设计硬件原理图PCB+BOM+FPGA Verilog源码+文档说明,4层板设计,包括完整的原理图+PCB+生产BOM文件,CYCLONE2 FPGA设计逻辑源码文件 2、 设计概述 本板作为千兆机内帧的接收板,主要功能是接收千兆机内帧控制器输入的显示数据,经过SDRAM转存后再通过十六个百兆口输出。同时要能接收箱体扫描板输出数据。其中收发关系由本板百兆芯片实现AUTOCROSS。 3、 具体设计 3.1 SDRAM.SCH  使用一片86脚,TSOP封装的SDRAM  可以使用64M,128M的SDRAM。使用64M芯片时21脚(A11)NC  DQM[3:0]接地,CKE接3.3V电源 3.2 FPGA.SCH  FPGA芯片使用EP2C8Q208  配置方式JTAG+AS(EPCS4)  25M时钟和RESET接PLL1的输入端  FPGA附加电路:FLASH,EEPROM,温度传感,天光亮度传感  FLASH的CS#接地,WP#接3.3V。EEPROM的WP接地  千兆的CLK125,RC125,MEDIA,BREAK接PLL2IN  千兆PHY和两个百兆PHY的管理接口复用一对I/O。 千兆PHY地址为00001;百兆PHY地址为10***,01***  百兆芯片共用一个RESET引脚 3.3 POWER.SCH  5V电源输入  FPGA内核电压1.25V使用一片1085_ADJ  板上3.3V电压使用一片2831Y  千兆芯片的2.5V使用一片2831Y  两个百兆芯片的1.8V各使用一片2831Y,需要测试是否可以使用一片 每个百兆芯片需要760mA工作电流 3.4 INDRIVE.SCH  千兆芯片使用BCM5421S  留有光接口与电接口,使用MEDIA选择管脚选择接口类型  引脚设置如下: 信号类型 信号名称 引脚 IO 功能描述 连接方式 与FPGA相连的信号 RXD[7:0] 2,3,4,9,10,11,12,15 O 接收数据,与RXC同步 在100BASE-TX和RGMII模式下,只有RXD[3:0]有效 经过排阻和FPGA相连(如图19) TXD[7:0] 104,103,102,101,100,99,98,97 I 发送数据,与GTXCLK同步 在100BASE-TX和RGMII模式下,只有TXD[3:0]有效 RX_DV 1 O 高电平指示正在接收数据 TX_EN 106 I TXD[7:0]传输使能 GTXCLK 107 I GMII传输时钟,MAC提供的125M时钟,用于同步发数据 RX_ER 113 O RX_DV高,RX_ER高指示从双绞线收的数据有错 INTR#/ ENDET 76 I 中断信号 当检测到ENERGY置高1.3ms 当无ENERGY 1.3s 置低 与FPGA的CLKIN相连 MDC 20 串行数据MDIO的同步时钟,可以达到12.5M 与FPGA相连,与百兆芯片复用 MDIO 21 用于配置MII寄存器的串行数据 与RJ45相连的信号 TRD[0]+- 47,48 IO 网线的收发差分对 与RJ45相连 TRD[1]+- 50,49 IO TRD[2]+- 56,57 IO TRD[3]+- 59,58 IO 与光头相连的信号 SGIN+- 115,116 I SerDes/SGMII差分数据输入 与光头相连 SGOUT+- 118,119 O SerDes/SGMII差分数据输出 指 示 灯 信 号 B_TX 70 O 传输数据指示信号 B_RC 71 O 接收数据指示信号 B_LINK2 72 O 传输速度指示信号 00表示1000BASE-T LINK 高电平使能SERDES模式 B_LINK1 73 O B_FDX 74 I/O pd 高电平使能SGMII模式 全双工指示信号 B_SLAVE 75 I/O pu A-N使能 Master/Slave指示信号 B_QUALITY 85 O 铜线连接质量指示信号 RGMII模式下设置RXC Timing 时 钟 信 号 XTALI 124 I 5421的外接25M参考时钟 接25M晶体 XTALO 125 O RXC 112 O 从输入的模拟信号中恢复的125M时钟,用于同步RXD[7:0] 接FPGA的CLKIN CLK125 18 O MAC参考时钟,由XTALI倍频产生的125M时钟信号输出 接FPGA的CLKIN 接成1或者0的控制信号 PHY[4:0] 63,
RTL8201CL双路DVI Hub CYCLONE2 FPGA主控板PROTEL设计原理图+PCB+BOM+Verilog源码+设计文档,4层板设计,包括完整的原理图PCB设计工程文件,FPGA逻辑源码,已在项目中使用,可以做为你的设计参考。 2. 总体设计概述 本板作为DVI Hub控制板,主要功能是接收计算机输入的DVI数据,分三向下行输出 根据上述功能, Dual link DVI Hub电路板可以分为以下几个部分: 1. FPGA部分。主要包括一块FPGA(EP2C8QF256)和一个EPCS4、一个有源晶振20MHhz 2. DVI receiver 部分。主要包括2片panellink receiver(SII163B)including master and slave 3. DVI send 部分. 主要包括3片 (TFP410A) 4. 存储器部分:一个flash存储器(S25FL040A)和一个IIC(AT24C18) 5. DVI 传输端口部分。包括4个DVI端子, 6. 工控部分:1个温度传感器DS18B20 7. 电源部分 : FPGA的bank1和4、百兆芯片和DVI receiver、DVI send用3.3V电压由一片LDO供电(加一开关电源芯片AOZ1010AI以备选)。 FPGA的bank2和3用1.5V电压由一片 LDO供电。 FPGA的核电压用1.25V电压由一片 LDO供电 8. 百兆接口部分:主要包括1个百兆芯片(RTL8201CL)、1个RJ45端子和1个百兆线圈H1102。时钟由FPGA提供 3、 原理图设计具体说明 3.1 . Power部分 本PCB上用到的电源电压有: +3.3V、+1.2V、1.5V。板上芯片用到的数字电压、模拟电压和数字地、模拟地都可以由这些电压或者GND经过电感(磁珠)隔离产生。  输入的5伏电源首先需要滤波电路和保护电路。保护电路由单向二极管和稳压管组成,滤波电路由100UF电容并联0.1UF电容组成。LED管串联150欧电阻用作电源指示灯。  +3.3和+1.2、1.5 v电源设计: +3.3、+1.5和+1.2由+5经过LM108转换得到,其电路图如图1 图1 +5到+3.3、+1.5和+1.2转换电路 调压芯片的输出端并联100UF和0.1UF的电容以稳定输出电压。 其中加入4个二极管可减少LDO芯片的热量 +3.3和+1.2也可+5经过AOZ1010AI转换得到,其电路图如图2 图2 +5到+3.3和+1.2转换电路 经计算后得出本系统的功率要求不高,考虑到成本和电路机构,选择用LDO芯片电源,外加一个AOZ1010AI转换3.3V电源作备用。 3.2 . drive部分  RTL8201CL有如下复用脚 number name Description mode used 1 LDPS LDPS省电模式,高有效 不使能  此外RTL 8201CL 还有如下配置功能脚 number name Description mode used 1 ISOLATE 芯片与MAC隔离 不使能
黑金cyclone2 fpga开发板核心板+开发底板 protel 99se硬件原理图PCB工程文件,Protel 99se设计硬件原理图PCB文件,包括完整的原理图和PCB及封装库文件,可用Protel或 Altium Designer(AD)软件打开或修改,可作为你产品设计的参考。