赞
踩
1,下载安装quartus:
因为后期使用quartus时候需要用到相应的器件,所以在要将相应的器件包(比如cyclone等)提前下载好,然后和安装软件放在一个目录下,然后点击quartus安装软件,开始下载。否则,等你下载完quartus,会发现找不到相应的器件,这个时候再安装器件包就很繁琐。以下是一些器件包:
1,FPGA是可编程逻辑门阵列,用于编辑门逻辑电路(and,or,xor,not或者是解码器,数学方程)
内部包含CLB可编程逻辑模块,输出输入模块IOB,以及内部连线;
FPGA采用查找表,内部是SRAM静态储存器,通过向FPGA内部的静态存储单元加载编程数据 实现逻辑控制。可以将 编程数据放置在flash芯片中,然后通过上电加载到FPGA中。由存放在RAM中的程序来设置工作状态,上电时,FPGA将EEPROM中是数据读入RAM,配置完成后,FPGA进入工作状态。掉电后,FPGA恢复成白片,内部逻辑关系消失;
3,quatrus II 是FPGA的集成开发软件,含EDA接口,硬件描述语言编程环境,内部嵌由综合器,仿真器
4,开发流程:
设计输入:添加原理图,或者添加编程语言,EDIF网表输入,波形输入
编译(compilation):
仿真(simulation): 包括功能仿真,时序仿真,定时分析;
仿真步骤:(1)新建波形编辑文件;(2)设置仿真时间区域 ,保存文件 (3)导入欲要观察的信号节点,编辑激励号; (4)设置数据格式,仿真器参数;(5)启动仿真;
验证:成功编译后,将编程文件下载到FPGA系统中调试,调试成功后,烧写到FPGA的配置芯片中。用得到的编程文件通过编程电缆配置PLD,加入实际激励。
5,verilog HDL和VHDL是硬件描述语言。verilog HDL包含两种数据类型:线网数据类型(构件间的物理连线),寄存器类型(抽象的数据存储元件)
6,编码器:
(1)检测编码周期是否开始;(2)进行输入数据的曼彻斯特编码 (3)产生奇偶校验位并对其进行编码;
曼彻斯特编码是将NRZ二进制数据与其位率时钟信号相异或而得,保证每个码元周期占用一个位率时钟信号周期。
位率时钟信号下降沿时和NRZ异或相当于0,上升沿相当于1;
这四个模块进行分析:
发送信号电平沿检测模块:用于检测mfs信号上升沿,当检测到上升沿使能信号clk1x_en,程序:
always @(posedge clk16x or negedge rst)
begin
if(!rst )
begin
mfs <= 1' b0;
mfs <=1' b0;
end
else
begin
mfs <=mfs1;
mfs1<=mfs;
end
end
时钟分频模块:当检测到上升沿后,使能时钟信号clk1x_en。当数据发送完毕,失能clk1x_en;其中含有16位时钟分频,将clk16x经16分频得到clk1x。程序如:
always @(posedge clk16x or negedge rst)
begin
if( !rst)
clk1x_en <=1'b0;
else if( mfs1==1'b1&&mfs2==1'b0) //检测到mfs上升沿时是能ckl1x_en
clk1x_en <= 1'b1;
else if (bit_cont==4'b1011) //当数据发送完成时,失能clk1x_en
clk1x_en <= 1'b0;
end
//16时钟分频
always @(posedge clk16x or neegedge rst)
begin
if (!rst)
clkdiv <= 4 'b0000;
else if (clk1x_en==1'b1)
clkdiv <=clkdiv+ 1'b1; //16分频计数
else
clkdiv <= 4'b0000;
end
assign clklx = clkdiv[3] ; //clk16x经16分频的单倍时钟clk1x,
数据位发送计数模块根据时钟信号发送数据给编码器,达到同步,并同时技术。
曼彻斯特编码模块,当检测到mfs上升沿时,将mdata数据送到mbuf缓存。一次发送11位,其中编码头3位,时111,8位数据位,1位校验位;
7,解码器:
解码器分为,曼彻斯特信号电平沿检测模块,时钟分频模块,曼彻斯特解码模块;
8,verilog HDL语言简单了解:
module mux2_1(a, b, s, y); //模块名、模块接口名
input a, b, s; // 定义输入端口
output y; // 定义输出端口
/* s为0时,选择a输出;
s为1时,选择b输出。*/
assign y = (s == 0) ? a : b; //输出信号
endmodule
not(ns, s);//这里使用了一个非门,输出是ns,输入是s
and(as, a, ns);//使用一个与门,输出as,输入a和ns
and(bs, b, s);//使用与门,输出bs,输入b和s
or(y, as, bs);//使用或门,输出y,输入as和bs
reg y; //reg 表示寄存器
顺序块的格式如下:
begin
语句1;
语句2
......
end
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。