高速双路ADC AD9280 FPGA读写实验 Verilog设计源码Quartus工程文件,ADC芯片选用AD9280 ,FPGA型号Cyclone4E系列中的EP4CE10F17C8,Quartus版本18.0。 module hs_dual_ad( input sys_clk , //AD0 input [9:0] ad0_data , //AD0数据 input ad0_otr , //输入电压超过量程标志 output ad0_clk , //AD0(AD9280)采样时钟 output ad0_oe , //AD1 input [9:0] ad1_data , //AD0数据 input ad1_otr , //输入电压超过量程标志 output ad1_clk , //AD1(AD9280)采样时钟 output ad1_oe ); //***************************************************** //** main code //***************************************************** // ad0_oe=0,正常模式;ad0_oe=1,高阻 wire clk_50m; assign ad0_oe = 1'b0; assign ad1_oe = 1'b0; assign ad0_clk = ~clk_50m; assign ad1_clk = ~clk_50m; pll u_pll( .inclk0 (sys_clk), .c0 (clk_50m) ); endmodule
1
RS485接口收发测试FPGA读写实验Verilog逻辑源码Quartus工程文件+文档说明资料,FPGA为CYCLONE4系列中的EP4CE6E22C8. 完整的工程文件,可以做为你的学习设计参考。 实验任务和现象 任务:使用两块开发板,一块用作发送,一块用作接收。通过4个按键改变数据,并用LED将发送和接收的数据显示出来。 现象:两块开发板LED显示的效果一样,并且按下不同的按键,可以改变LED的显示,同时接收的板子接到数据后改变LED显示。 •5、设计思路 我们依旧采用串口的设计思路,设计程序,但因为 MAX485是半双工器件,所以需要接收和发送状态切换,有两个时能端,我们的开发板,将两个接到一起用一个引脚控制。 我们以串口发送为例: 以波特率9600为例子说明,波特率9600接收一个bit的时间为1s/9600=104us,即每隔104us发送一个数据。 module RS485_Revc ( input sys_clk , input sys_rst_n , input RO , output wire RE_DE , output reg [7:0] LED ); /***************reg define****************/ reg [7:0] buff ; reg [7:0] data_out ; reg [15:0] counter ; reg rxd_din1 ; //uart rxd input ; reg rxd_din2 ; //uart rxd input ; reg rxd_negedge_sig_flag ; /***************wire define***************/ wire rxd_negedge_sig ; /******************************************************************************************************* ** Main Program ** ********************************************************************************************************/ assign RE_DE = 1'b0; always @ (posedge sys_clk or negedge sys_rst_n) begin if ( sys_rst_n ==1'b0 ) begin rxd_din1 <= 1'b0; rxd_din2 <= 1'b0; end else begin rxd_din1 <= RO ; rxd_din2 <= rxd_din1; end end assign rxd_negedge_sig = (~rxd_din2) &(rxd_din1); always @ (posedge sys_clk or negedge sys_rst_n) begin if ( sys_rst_n ==1'b0) rxd_negedge_sig_flag <= 1'b0; else rxd_negedge_sig_flag <= rxd_negedge_sig; end always @ (posedge s
lm75A温度数字转换器 FPGA读写实验Verilog逻辑源码Quartus工程文件+文档资料,FPGA为CYCLONE4系列中的EP4CE6E22C8. 完整的工程文件,可以做为你的学习设计参考。 module LM75_SEG_LED ( //input input sys_clk , input sys_rst_n , inout sda_port , //output output wire seg_c1 , output wire seg_c2 , output wire seg_c3 , output wire seg_c4 , output reg seg_a , output reg seg_b , output reg seg_c , output reg seg_e , output reg seg_d , output reg seg_f , output reg seg_g , output reg seg_h , output reg clk_sclk ); //parameter define parameter WIDTH = 8; parameter SIZE = 8; //reg define reg [WIDTH-1:0] counter ; reg [9:0] counter_div ; reg clk_50k ; reg clk_200k ; reg sda ; reg enable ; reg [WIDTH-1:0] data_out ; reg [31:0] counter_init ; reg [10:0] buff ; reg [7:0] lm75_temp ; reg [3:0] segled_counter ; reg [25:0] count ; reg [ 3:0] disp_data ; reg [7:0] dat ; reg disp_clk ; reg [25:0] clk_cnt ; reg [15:0] scan_cnt ; reg [ 3:0] segled_bit_sel ; reg [ 3:0] lm75_temp_dec_l ; reg [ 3:0] lm75_temp_dec_h ; reg segled_a ; reg segled_b ; reg
LCD1602屏 (EP4CE30) FPGA读写实验Verilog逻辑源码Quartus工程文件+文档资料。FPGA为CYCLONE4系列中的EP4CE30F23C8. 完整的工程文件,可以做为你的学习设计参考。 module LCD1602_Cnt(input sys_clk, //50M input sys_rst_n, output reg lcd_rs, //0:write order; 1:write data output lcd_rw, //0:write data; 1:read data output reg lcd_en, // output reg [7:0] lcd_data); //--------------------lcd1602 order---------------------------- parameter Mode_Set = 8'h38, //������ʾģʽ��8λ2��5x8���� Cursor_Set = 8'h0c, //��ʾ������겻��ʾ�����겻������˸ Address_Set = 8'h06, //���ֲ����������Զ����� Clear_Set = 8'h01; //��������긴λ /****************************LCD1602 Display Data****************************/ wire [7:0] data0,data1; //counter data wire [7:0] addr; //write address //---------------------------------1s counter----------------------------------- reg [25:0] cnt1; reg [7:0] data_r0,data_r1; always@(posedge sys_clk or negedge sys_rst_n) begin if(!sys_rst_n) begin cnt1 <= 1'b0; data_r0 <= 1'b0; data_r1 <= 1'b0; end else if(cnt1==26'd50000000) begin if(data_r0==8'd9) begin data_r0 <= 1'b0; if(data_r1==8'd9) data_r1 <= 1'b0; else data_r1 <= data_r1 + 1'b1; end else data_r0 <= data_r0 + 1'b1; cnt1 <= 1'b0; end else cnt1 <= cnt1 + 1'b1; end assign data0 = 8'h30 + data_r0 ; assign data1 = 8'h30 + data_r1 ; //-------------------address------------------ assign addr = 8'h80; /****************************LCD1602 Driver****************************/ //-----------------------lcd1602 sys_clk_en--------------------- reg
高速双路DAC AD9708 FPGA读写实验 Verilog设计源码Quartus工程文件,DAC芯片选用AD9708,FPGA型号Cyclone4E系列中的EP4CE10F17C8,Quartus版本18.0。 module hs_dual_da( input sys_clk , //系统时钟 input sys_rst_n , //系统复位,低电平有效 //DA芯片接口 output da_clk , //DA(AD9708)驱动时钟,最大支持125Mhz时钟 output [9:0] da_data , //输出给DA的数据 //DA芯片接口 output da_clk1 , //DA(AD9708)驱动时钟,最大支持125Mhz时钟 output [9:0] da_data1 //输出给DA的数据 ); //wire define wire [9:0] rd_addr; //ROM读地址 wire [9:0] rd_data; //ROM读出的数据 //***************************************************** //** main code //***************************************************** //assign ad_clk2 = ad_clk ; assign da_clk1 = da_clk; assign da_data1 = da_data; pll u_pll( .inclk0 (sys_clk), .c0 (clk)); //DA数据发送 da_wave_send u_da_wave_send( .clk (clk), .rst_n (sys_rst_n), .rd_data (rd_data), .rd_addr (rd_addr), .da_clk (da_clk), .da_data (da_data) ); //ROM存储波形 rom_1024x10b u_rom_1024x10b( .address (rd_addr), .clock (clk), .q (rd_data) ); endmodule