`俺是 FPGA的小白,从工作开始才接触FPGA,至今云里雾里,但求用最简洁的语言,说说这些。帖子会持续更新,也是自我监督。
由于兜兜转转,最终在FPGA这里停了下来,之前接触过的是C语言, 单片机,也许下一步走的是ARM7到其他,却由于多个项目不得不接触FPGA,先前已经学过相关的数字 电路,但是对FPGA的概念还是比较模糊,单单停留在文字上。
现在断断续续接触了FPGA的相关知识已经快三个月,特此整理一些学习的知识,目前也在逐步学习中,希望和大家多交流。`
|
|
|
|
我发现没有说Verilog HDL 是不行的,我这里这关就过不了,老想着说,既然这样,就整理一下,从Verilog HDL这本书说起,一般我都会做一个学习笔记,有相同进度的切磋切磋。
|
|
|
|
|
楼主,我昨天刚听说有个东西叫做FPGA,,之前学过一点点C语言,数字电路,单片机,,现在我要从零起步学习,FPGA有啥入门的视频给小弟推荐一下不?跪谢
|
|
|
|
|
17# bailu0216 发表于 12 小时前
感谢分享!!!帮了大忙
|
|
|
|
|
本帖最后由 matang7 于 2015-3-25 01:09 编辑
学习笔记
《Verilog 数字系统设计教程》 夏宇闻
这本书第8章是语法概念总复习与练习,本以为我也算有点语法基础了,没想到错误率这么高,这让我不得不去重新审视自己的学习,所以现在整理出一份笔记,也为了以后能查找方便。
从后面的思考题出发,写出答案吧,再总结一些知识点,当然这只是学习笔记,并非标准答案。
1.什么是信号处理电路,由哪两部分组成?
滤波,变换,加密,解密,编码,解码等一些数学运算的操作,由高速专用数字逻辑系统或专用数字信号处理器组成
2.为什么要设计专用的信号处理电路?
因为数字信号处理系统要进行一些复杂的数学运算和数据处理,且有实时响应的要求
3.什么是实时处理系统
在规定的时间内完成信号处理的,例如军用无线通信和雷达
4.为什么要用硬件描述语言来设计复杂的算法逻辑电路
易于理解,维护,调试电路速度快,有专门的易于理解的仿真,综合和布线工具
5.能不能完全用C语言代替用硬件描述语言来设计复杂的算法逻辑电路
不能,两者可以结合使用,C语言是顺序结构,而描述语言可以并行的。
6.为什么算法逻辑电路要用C语言配合使用提高设计效率
C语言种类较多,可以加快电路的设计和查错,C语言和描述语言相近,可以稍加约束替换
PS: 硬件描述语言 HDL
因为硬件描述语言的标准化,使得硬件描述语言设计的数字逻辑系统具有很大的灵活性可以映射到任何工艺的电路上,Verlag HDL和VHDL和工艺无关,早期的是专用的电路原理图输入,和工艺有关,不同的工艺会带来很多麻烦。 软核,固核,硬核,虚拟器件的概念 软核:把功能经过验证的、可综合的、实现后电路结构总门数在5000门以上的Verilog HDL模型 固核:把在某一种现场可编程们阵列(FPGA)器件上实现的、经过验证正确的总门数在5000门以上的电路结构编码文件 硬核:把在某一种专用集成电路(ASIC)器件上实现的、经过验证正确的总门数在5000门以上的电路结构版图掩膜 虚拟器件:由软核构成的器件 Top_Dowm(自上向下)设计是说把一个硬件系统分成若干个块,这些模块再分块,然后用模型建立,用HDL输入 Verilog适合系统级(system)、算法级(alogirthem)、寄存器传输级(RTL)、逻辑级(logic)、门极(gate)、电路开关级(switch)设计,system Verilog 是Verilog延伸和扩展,适用可重用、可综合的IP和可重用可验证的IP
HDL设计流程
|
|
|
|
|
本帖最后由 matang7 于 2015-3-27 11:19 编辑
续:
值集合 整型数 实数 字符串
整型数:
简单的十进制数字表示 15 -15 (有符号)
负数用2的补码表示
求-5的补码(在8位二进制中)
因为给定数是负数,则符号位为“1”。
后七位:-5的原码(10000101)→符号位不变(10000101)→数值位取反(11111010)→加1(11111011)
所以-5的补码是11111011。
在6位二进制中
-15 原码(101111)→符号位不变(101111)→数值位取反(110000)→加1(110001)
基数表示 2’b01 -2’d4 (无符号)
实数:
十进制表示法 2.0 0.1 15.78
科学计数法 3.6E2 23e2
字符串:是8位的ASCII值的序列
reg [1:8*14] message
message = “INTERNAL ERROR ”
initial块 always块 实例化 连续赋值语句都是并行的 always块内部是顺序执行的
3.为什么端口要说明信号的位宽?
因为如果不说明信号的位宽可能会在信号发生改变时发生错误,不容易看出接收到的信号的数据宽度,就很难进行数据的处理
-4'd11 = ? 二进制 4’b0100(11的补数,用4位二进制补码表示)
当常量不说明位数时,是32位的,10=32’d10=32’b1010
-1=-32’d1=32’hFFFFFFFF h的负号呢 ? 整数中,有基数的负数被当成无符号数处理 《Verilog HDL 入门》 p46
-12 是10100的5位向量形式(有符号)?
Wire型数据常用来表示以assign关键字指定的组合逻辑信号 module中输出信号被定义成wire型 reg型定义的信号会被用在always块内 reg 常代表触发器和寄存器 但不一定所有的reg都是寄存器和触发器
-10%3= -1 11%-3 =2 %为模运算符 模运算时 负号取第一个操作数
只有assign语句和实例语句可以独立于过程块 而存在在模块的功能定义部分
模块由接口和逻辑描述构成
reg [7:0] B
B=8’bZ0=8’bZZZZ_ZZZ0
wire 为网络数据类型 表示结构实体间的物理连接 不能存储值 没有驱动时为高阻值z reg为寄存器数据类型
逻辑比较运算符 <= 和 非阻塞赋值 <= 一样 Verilog在解释和编译时不会搞错
因为逻辑比较时“<=”两边是两个操作数,此时“<=”是双目运算符,而在非阻塞赋值时“<=”的右边是操作数,此时“<=”单目运算符。
实例引用的描述实际是严格意义上的电路结构描述?
不能实例引用的描述是在门级电路上加以描述的,和严格意义上的电路结构描述还是有点差距的
|
|
|
|
|
续
位拼接运算符 {} 用一个信号名 {a,b[3:0],w,3’b101}等同于{a,b[3],b[2],b[1],b[0],w,1’b1,1’b0,1’b1} {4{w}等同于}{w,w,w,w} 缩减运算符 reg [3:0] B C=&B 等同于 C= ((B[0]&B[1])&B[2]&B[3])
非阻塞赋值 a<=b
块结束后才能完成这次赋值操作 在编写可综合的时序逻辑模块时,常用非阻塞赋值
阻塞赋值 a=b
非阻塞是并行的 阻塞是顺序的
顺序块 begin end
并行块 fork join
在Verilog 语言里 所有的变量都是静态的 所有的变量都只有一个唯一的存储的地址 跳出块不影响存储在变量内的值
|
|
|
|
|
续
对有符号数无符号数的判断(概念参考《Verilog HDL 入门p53》)
module abs_tst(clk,rst,data_s,data_us);
input clk;
input rst;
input [7:0] data_s;
output data_us;
wire [7:0] data_us;
assign data_us=(data_s[7])?{1'b0,~(data_s[6:0]-1)}:data_s;
endmodule
测试文件 // Generated on "03/30/2015 20:00:42" // Verilog Test Bench template for design : abs_tst // // Simulation tool : ModelSim-Altera (Verilog) // `timescale 1 ns/ 1 ps module abs_tst_vlg_tst(); // constants reg clk; reg [7:0] data_s; reg rst; // wires wire [7:0] data_us; abs_tst i1 ( // port map - connection between master ports and signals/registers .clk(clk), .data_s(data_s), .data_us(data_us), .rst(rst) ); initial begin $display("Running testbench"); rst = 0; clk=0; #10; @(posedge clk) rst=1; #100 data_s =8'b0000_0000; #100 data_s =8'b0111_1110; //0111_1110 #100 data_s =8'b1101_1101; //1010_0011(第一位数是符号位1表示负数) #100 data_s =8'b0111_1011; $stop; end always #10 clk=~clk; endmodule
|
|
|
|
|
楼主,你的FIR是如何实现的,我使用直接用IP核做的,用IP核直接生成系数,做了低通的滤波器,发现输出是原信号,压根没有滤波效果,不知为何?请教一下你的FIR是如何实现的?
|
|
|
|
|
顶楼主,我最近也准备开始学FPGA,希望以后可以多交流,共勉
|
|
|
|
|