一步让你明白fpga数字信号处理
fpga数字信号处理
Verilog根本电路设计之一:单bit跨时钟域同步
\\\插播一条:
自己在今年整理一套单片机单片机相关论文800余篇(附送网盘链接)
论文制作思维导图
原理图+源代码+开题报告+正文+外文资料
想要的同学私信找我。
Verilog基本电路设计(包括:时钟域同步、无缝切换、异步FIFO、去抖滤波))
首先介绍异步信号的跨时钟域同步问题。一般分为单bit的控制信号同步,以及多bit的数据信号同步。多bit的信号同步会使用异步FIFO完成,而单bit的信号同步,又是时钟没缝切换电路以及异步FIFO电路的设计根底,这里先介绍单bit信号同步处理。clka域下的信号signal_a,向异步的clkb域传递时,会产生亚稳态问题。所有的亚稳态,归根结底就是setup/hold时长不满足导致。在同一个时钟域下的信号,综合以及布线工具能够在data路径或者clock路径上插入buffer使得每一个DFF的setup/hold时长都满足;但是当signal_a在clkb域下使用时,由于clka与clkb异步,它们的相位关系不确定,那么在clkb的时钟沿到来时,没法确定signal_a此时是否处于稳定没变化状态,也即setup/hold时长没法确定,从而产生亚稳态。这种异步信号在前后端流程里面是没法做时序分析的,也就是静态时序分析里常说的false_path。打消亚稳态,就是采用多级DFF来采样来自另一个时钟域的信号,级数越多,同步过来的信号越稳定。对于频次很高的设计,建议至少用三级DFF,而两级DFF同步则是所有异步信号处理的最根本要求。单bit的信号跨时钟域同步,又分成电平信号同步以及脉冲信号同步。电平信号,就是说clka下的信号signal_a在clkb看来,是一个很宽的信号,会保持多个clkb的时钟周期,一定能被clkb采到。这种情况,只须要使用clkb用至少两级DFF不间断抓signal_a即可,特别须要强调的是,此时signal_a必需是clka下的寄存器信号,假如signal_a是clka下的组合逻辑信号,一定要先在clka下用DFF抓一拍,再使用两级DFF向clkb传递。这是由于clka下的组合逻辑信号会有毛刺,在clka下使用时会由setup/hold时长保证毛刺不会被clka采到,但由于异步相位不确定,组合逻辑的毛刺却极有可能被clkb采到。电平信号的同步处
私信我绿色软件airuimcu
理,一般用于知道确定的时钟频率大小关系或者极慢时钟下的信号向极快时钟域传递时使用,简单处理如下:
always @ (posedge clkb or negedge rst_n)beginif (!rst_n) beginlevl_b_d1 levl_b_d2 levl_b_d3 endelse beginlevl_b_d1 levl_b_d2 levl_b_d3 endendassign puls_b_pos = levl_b_d2 & (~levl_b_d3);
assign puls_b_neg = levl_b_d3 & (~levl_b_d2);assign levl_b_out = levl_b_d2;
上面三个输出分别是经过同步之后,clkb下可以使用的0变1脉冲信号,1变0脉冲信号以及电平信号。再次强调:levl_a_in必须是clka的DFF信号!下面是更常见的,clka下的脉冲信号,同步到clkb时钟域下,它对于clka与clkb的时钟频率关系没有任何限制,快到慢,慢到快都没问题。其主要原理就是先把脉冲信号在clka下展宽,变成电平信号,再向clkb传递,当确认clkb已经“看见”信号同步过去之后,再清掉clka下的电平信号。脉冲信号同步处理电路,有两个地方使用了上面的电平信号同步处理原则,请仔细揣摩原因。详细见下面的RTL,其中省略了信号定义声明:
module sync_pulse (// inputrst_n, // system resetclka, // clockAclkb, // clockBpuls_a_in, // pulse input from clka// outputpuls_b_out, // pulse output in clkblevl_b_out // level output in clkb);parameter DLY = 1; //always @ (posedge clka or negedge rst_n)beginif (rst_n == 1'b0)signal_a else if (puls_a_in)signal_a else if (signal_b1_a2)signal_a else ;endalways @ (posedge clkb or negedge rst_n)beginif (rst_n == 1'b0)signal_b elsesignal_b endalways @ (posedge clkb or negedge rst_n)beginif (rst_n == 1'b0) beginsignal_b_b1 signal_b_b2 endelse beginsignal_b_b1 signal_b_b2 endendalways @ (posedge clka or negedge rst_n)beginif (rst_n == 1'b0) beginsignal_b1_a1 signal_b1_a2 endelse beginsignal_b1_a1 signal_b1_a2 endendassign puls_b_out = signal_b_b1 & (~signal_b_b2) ;assign levl_b_out = signal_b_b1 ;endmodule
下一篇讲时钟切换电路。留下一个思考题:clka下的同一个寄存器信号signal_a,电平宽度对clkb而言足够长,如果同时调用两个相同的电平同步模块向clkb时钟传递,分别得到levl_b1和levl_b2,那么在clkb时钟域下看到的lev_b1和levl_b2信号是否一样?这个问题是实际设计中一不小心就会犯错的,如果能够想明白正确回答这个问题,异步信号的理解就可以过关了。
Verilog基本电路设计之二:时钟无缝切换
时钟切换分成两种方式,普通切换和去毛刺无缝切换。普通切换,就是不关心切出的时钟是否存在毛刺,这种方式电路成本小。如果时钟切换时,使用此时钟的模块电路处于非工作状态,或者模块内电路被全局复位信号reset住的,即使切出毛刺也不会导致DFF误触发,这样的模块可以选择用此种切换方式。写法很简单 assign clk_o = sel_clkb ? clkb : clka ,当sel_clkb为1时选择clkb,否则选择clka。不过在实际设计中,建议直接调用库里的MUX单元set_dont_touch,不要采用这里的assign写法,因为这种写法最后综合得到的可能不是MUX而是复杂组合逻辑,给前后端流程的时钟约束和分析带来不便。无缝切换,就是切换时无毛刺时钟平稳过渡。在时钟切换中,只要出现比clka或者clkb频率更高的窄脉冲,不论是窄的高电平还是窄的低电平,都叫时钟毛刺。工作在切换后时钟clk_o下的电路模块,综合约束是在max{clka,clkb}频率下的,也就是说设计最后signoff的时候,只保证电路可以稳定工作的最高频率是max{clka,clkb},如果切换中出现更高频的时钟毛刺,电路可能出现无法预知的结果而出错。无缝切换,一般用在处于工作状态的模块需要调频或者切换时钟源,比如内部系统总线,CPU等。你刚用手机打完游戏后马上关屏听音乐,这两种场景中,CPU在满足性能前提下为了控制功耗,其工作频率会动态地从很高调至较低,此时就可能是在CPU一直处于工作状态下,通过无缝切换时钟源头实现的。在无缝切换电路中,切换信号sel_clkb可以是任意时钟域下的信号,包括但不限于clka或者clkb域,但是sel_clkb必须是一个DFF输出信号;clka与clkb的频率大小相位关系可以任意。无缝切换需要解决两个问题,一是异步切换信号的跨时钟域同步问题,这里需要使用《Verilog基本电路设计之一》里的同步电路原理消除亚稳态;二是同步好了的切换信号与时钟信号如何做逻辑,才能实现无毛刺。下面写出无缝切换电路的主体部分,忽略了内部信号的定义声明等。
module clk_switch (rst_n,clka,clkb,sel_clkb,clk_o);always @ (posedge clka or negedge rst_n)beginif (!rst_n) beginsel_clka_d0 sel_clka_d1
endelse beginsel_clka_d0 sel_clka_d1 endend// part2//always @ (posedge clka_n or negedge rst_n)always @ (posedge clka or negedge rst_n)beginif (!rst_n) beginsel_clka_dly1 sel_clka_dly2 sel_clka_dly3 endelse beginsel_clka_dly1 sel_clka_dly2 sel_clka_dly3 endend// part3//always @ (posedge clkb_n or negedge rst_n)always @ (posedge clkb or negedge rst_n)beginif (!rst_n) beginsel_clkb_d0 sel_clkb_d1 endelse beginsel_clkb_d0 sel_clkb_d1 endend// part4//always @ (posedge clkb_n or negedge rst_n)always @ (posedge clkb or negedge rst_n)beginif (!rst_n) beginsel_clkb_dly1 sel_clkb_dly2 sel_clkb_dly3 endelse beginsel_clkb_dly1 sel_clkb_dly2 sel_clkb_dly3 endend// part5clk_gate_xxx clk_gate_a ( .CP(clka), .EN(sel_clka_dly3), .Q(clka_g) .TE(1'b0) );clk_gate_xxx clk_gate_b ( .CP(clkb), .EN(sel_clkb_dly3), .Q(clkb_g) .TE(1'b0) );//assign clka_g = clka & sel_clka_dly3 ;//assign clkb_g = clkb & sel_clkb_dly3 ;assign clk_o = clka_g | clkb_g ;endmodule
上面是我认为比较合理的无缝切换电路,其他切换方式跟这个会有些许出入,但基本大同小异原理是一样的。有几点说明:1、抛开注释掉的电路不看,由于part5部分直接调用库里的clock gating cell,使得整个切换电路全部只需要用到时钟上升沿,无需额外定义反向时钟,精简了DC综合的时钟约束;直接调用gating cell的另一个好处是,前后端工具会自动检查gating cell的CP信号与EN信号的setup/hold时间,使得gating后的Q时钟输出无毛刺尖峰。TE端可以根据实际需要接上scan测试模式信号。如果使用part5部分的gating cell实现,前面的part1,2,3,4全部替换成注释掉的反相时钟也是没有问题。2、part2和part4部分,具体需要多少级DFF,甚至完全不要也是可以的,这就回到了《Verilog基本电路设计之一》里讨论的到底多少级DFF消除亚稳态才算合理的问题。时钟频率很低可能无所谓,如果时钟频率达到GHz,这部分建议至少保留三级DFF,因为三级DFF延时也仅仅只有3ns的时间裕度。没必要为了省这么几个DFF降低电路可靠性,在复杂IP以及大型SOC系统中,你会发现多几十个DFF,面积上可以忽略,系统可靠性和稳定性才是首要的。3、如果part5部分希望使用注释掉的两行“与”逻辑实现时钟gating,此时part1与part3使用正相或者反相时钟都可以,但是必须把part2和part4部分改为注释掉的反相时钟实现,目的是初步从RTL设计上避免“与”逻辑的毛刺,同时还需要后端配合,因为很多后端工具对时钟“与”逻辑的clock gating check未必会检查。用clk下降沿拍出的en信号,再跟clk做与逻辑得到的门控时钟,在RTL仿真阶段看到的一定不会有毛刺,但是布线完成后,如果clk相对en后移,那与逻辑得到的门控时钟就有毛刺了。这就是用与逻辑做门控的缺点,由于后端工具可能不会去检查这个与门的时序关系而导致出错。但直接调用库里的gating cell,工具天然就会去检查这个时序,免去人工确认的后顾之忧。最后,请大家仔细看看sel_clka_d0 和sel_clkb_d0 这两处逻辑,按理说,sel_clkb跟sel_clka_dly3以及sel_clkb_dly3之间相互都是异步的,而按照异步信号同步处理原则,两个不同时钟域下的信号是不允许直接做组合逻辑的,为什么这里可以这样使用?
Verilog基本电路设计之三:异步FIFO
FIFO用于为匹配读写速度而设置的数据缓冲buffer,当读写时钟异步时,就是异步FIFO。多bit的数据信号,并不是直接从写时钟域同步到读时钟域的,而是读写时钟域分别派遣了一个信使,去通知对方时钟域,当前本方所处的读写情况,来判断还能不能写以及可不可以读,这两个信使就是读写指针。在《Verilog基本电路设计之一》里已讨论过,即使单bit的异步信号,通过两个相同的同步电路,达到clkb域时都可能“长”的不是一个模样,更加不用说多bit的异步信号同时传递到clkb域会变成什么五花八门的模样了。这里读写指针不是单bit信号,它们如何向对方时钟域去同步呢?格雷码!它的特点是每次只有一个bit发生变化,这样就把多bit信号同步转变为了单bit信号同步,这也是为什么多bit的格雷码信号,可以类似于单bit信号那样,直接使用两级DFF去同步的根本原因。下面给出异步FIFO的主体部分,同样,省略了信号声明定义。module asyn_fifo (// inputaf_wclk , // async-FIFO clear in write clockaf_rclk , // async-FIFO clear in read clockrst_n, // system resetaf_wr_en, // async-FIFO write enableaf_rd_en, // async-FIFO read enableaf_dati, // async-FIFO data in//output af_full , // Async-FIFO full flagaf_empty, // Async-FIFO empty flagaf_dato // Async-FIFO data out);//------------------------- data input --------------------------assign nxt_wptr_wclk = (af_wr_en && !af_full) ? (wptr_wclk + 1'b1) : wptr_wclk ;assign nxt_wptr_gray = (nxt_wptr_wclk >> 1) ^ nxt_wptr_wclk ;always @ (posedge af_wclk or negedge rst_n)beginif (rst_n == 1'b0) beginwptr_wclk wptr_gray endelse beginwptr_wclk wptr_gray endendreg [31:0] ram[15:0] ; //always @ (posedge af_wclk)beginif (af_wr_en == 1'b1)ram[wptr_wclk[3:0]] else ;end//------------------------ data output ---------------------------assign nxt_rptr_rclk = (af_rd_en && !af_empty) ? (rptr_rclk + 1'b1) : rptr_rclk ;assign nxt_rptr_gray = (nxt_rptr_rclk >> 1) ^ nxt_rptr_rclk ;always @ (posedge af_rclk or negedge rst_n)beginif (rst_n == 1'b0) beginrptr_rclk rptr_gray endelse beginrptr_rclk rptr_gray endendassign af_dato = ram[rptr_rclk[3:0]] ;// sync read pointeralways @ (posedge af_wclk or negedge rst_n)beginif (rst_n == 1'b0) beginrptr_sp1 rptr_sp2 endelse beginrptr_sp1 rptr_sp2 endend// sync write pointeralways @ (posedge af_rclk or negedge rst_n)beginif (rst_n == 1'b0) beginwptr_sp1 wptr_sp2 endelse beginwptr_sp1 wptr_sp2 endendassign af_full = (wptr_gray == {~rptr_sp2[4],~rptr_sp2[3],rptr_sp2[2:0]}) ;assign af_empty = (rptr_gray == wptr_sp2) ;assign wptr_bin[4] = wptr_sp2[4] ;assign wptr_bin[3] = (^wptr_sp2[4:3]) ;assign wptr_bin[2] = (^wptr_sp2[4:2]) ;assign wptr_bin[1] = (^wptr_sp2[4:1]) ;assign wptr_bin[0] = (^wptr_sp2[4:0]) ;assign rptr_bin[4] = rptr_sp2[4] ;assign rptr_bin[3] = (^rptr_sp2[4:3]) ;assign rptr_bin[2] = (^rptr_sp2[4:2]) ;assign rptr_bin[1] = (^rptr_sp2[4:1]) ;assign rptr_bin[0] = (^rptr_sp2[4:0]) ;assign af_wlevel = wptr_wclk - rptr_bin ;assign af_rlevel = wptr_bin - rptr_rclk ;assign af_half_full = (af_rlevel >= 5'h7) ;endmodule
上面给出的是深度16,宽度32的示例,大家可以使用parameter参数化定义深度和宽度,方便不同需求下的调用。除了空满信号标志,也可以根据需要做出半空半满之类信号。上面需要注意的一点就是,格雷码必须在本时钟域下DFF输出,再往另一个时钟域同步。同步FIFO呢,就不用有格雷码转换,设计更加简单,就不专门开贴描述了。
Verilog基本电路设计之四:去抖滤波
debounce电路,就是常说的去抖滤波,主要用在芯片的PAD输入信号,或者模拟电路输出给数字电路的信号上。
parameter BIT_NUM = 4 ;reg [BIT_NUM-1 : 0] signal_deb ; //always @ (posedge clk or negedge rst_n)beginif (rst_n == 1'b0)signal_deb elsesignal_deb endalways @ (posedge clk or negedge rst_n)beginif (rst_n == 1'b0)signal_o else if (signal_deb[3:1]==3'b111)signal_o else if (signal_deb[3:1]==3'b000)signal_o else ;end
上面的电路,第一个always,还兼顾了去亚稳态作用。它可以滤掉的宽度是两个clk的cycle,对于大于两个cycle而小于三个cycle的信号,有些可以滤掉,有些不能滤掉,这与signal_i相对clk的相位有关。根据希望滤除的宽度相关,换算到clk下是多少个cycle数,从而决定使用多少级DFF。如果希望滤除的宽度相对cycle数而言较大,可以先在clk下做一个计数器,产生固定间隔的脉冲,再在脉冲信号有效时使用多级DFF去抓signal_i;或者直接将clk分频后再使用。
现代数字信号处理课程研讨式教学实践
现代数字信号处理是在本科数字信号处理课程的基础上为通信、电子和控制类等专业研究生开设的一门重要的专业基础课程,旨在为其后续专业课程学习及从事相关学科中信号与信息处理等方面有关的研究工作打下良好的基础[1-2].这门课程应用性较强,技术更新快,但其内容抽象,理论性强,数学要求高,学习难度较大.目前,国内高校在研究生信号处理类课程的教学中,一方面教材及教学内容与当前数字信号处理领域的技术和科研发展相脱节的现象仍不同程度地存在[3]37;另一方面,在教学过程中,仍多沿用以教师为主的讲授式教学法,学生常因算法和理论的枯燥讲授而产生畏难乃至厌学情绪,教学效果难言理想[4-6].
作为一种将课程研究与讨论实践等活动贯穿于教学全过程的较为新颖的教学模式,研讨式教学因其较强的互动性和以学生为主体的教学理念而日益受到人们的推崇.其典型特点是:在教师的指导下,由学生自主组成研究团队,定期集中开展讨论,共同关注某个领域的最新进展[7].近些年来,国内各高校逐步意识到研讨式教学在培养学生独立研究和创新思维方面的独特优势,开始鼓励和引导广大教师积极开展研讨式课程教育教学改革,在教学中大力倡导与推广研讨式教学,对提升本科和研究生的培养质量起到了积极的作用[8-11].结合信号处理类课程的特点和研讨式教学模式的优点,将研讨式教学融入到研究生现代数字信号处理课程的教学中,能够克服学生对本课程学习的畏难情绪,充分调动其学习的主动性,将独立科研能力的培养目标落实到课程教学中,取得较好的教学效果.例如:王兆晖[3]38-40对研究生数字信号处理课程的教学方法进行了一系列探索和实践,借鉴翻转课堂与研讨式教学模式并结合双语教学手段,进行了研究生教学方法的摸索,在教学方法上的创新,活跃了课堂气氛,学生课余学习的主动性得到提高;包长春[12]等将研讨式教学法引入该校研究生声呐信号处理课程的教学中,针对不同专业学生进行课程内容体系改革,通过研讨式教学激发学生的学习兴趣和动力,并在课程后期通过专题讲座的形式将声呐技术的最新进展和前沿研究内容纳入课程.这些研究充分表明,将研讨式教学法引入研究生信号处理类课程的教学,有助于课程教学效果和研究生培养质量的提高.
本文在分析硕士研究生的学科背景和专业特点的基础上,对研究生现代数字信号处理的课程内容体系进行了有针对性的改革,并对研讨式教学模式在课程教学中的应用进行探索和实践.
1. 课程内容体系的调整
赣南师范大学从2017年开始,面向硕士研究生开设现代数字信号处理课程,并将其作为控制科学与工程一级学科硕士点和电子信息专业学位硕士点的学位课程,以及电子科学与技术一级学科硕士点和农业工程硕士(农业工程检测与控制技术方向)的方向选修课程.研究生现代数字信号处理课程的教学任务通常由1名高级职称教师和1名青年教师共同承担.课程学时为54个学时,主要围绕现代数字信号处理的相关知识和技术展开教学工作,主要分为3个阶段:
第1阶段是基础理论部分的阶段,主要讲授离散时间信号与系统、随机过程等知识要点,为进一步学习现代数字信号处理奠定理论基础;第2阶段为现代数字信号处理的主要技术学习阶段,这一阶段,主要讲授现代数字信号处理中主流的技术方法,掌握其实现方法,主要内容包括现代谱估计、自适应滤波、高阶统计分析和时频分析等,这一部分是本门课程的核心内容;第3阶段是现代数字信号处理技术的应用举例,在已有的基本理论和基本技术的基础上,主要讲授现代数字信号处理理论与技术的最新进展和前沿研究内容.
课程授课内容的总体框架较为稳定.但考虑到现代数字信号处理课程的选课学生来自于控制科学与工程、电子信息、电子科学与技术、农业工程(农业工程检测与控制技术方向)等多个学科专业或学科方向,这些学生本科专业背景差异较大.部分学生本科阶段仅学习过信号与系统、信号分析与处理,或自动控制原理等课程,没有系统学习过现代数字信号处理课程所要求的一些先修课程;部分本科计算机专业背景的学生甚至连信号与系统课程都没有学习过,仅有线性代数、概率论和数理统计等部分工程数学知识.因此,为使学生在理解课程内容时不致于过分吃力,在要求部分学生补修先修课程以外,在本课程教学内容的具体安排上也作了一些局部的调整.
在第1阶段的基础理论部分中,保留离散时间信号与系统部分的内容,但考虑到多数学生此前已有信号与系统的知识基础,因此对离散时间信号与系统部分的教学内容和学时进行适当压减;同时,相应加大随机过程部分的教学学时,以加深学生对随机过程理论的理解,并适当减少数学性内容的教学,注重加强概念、公式和定理的物理内涵的阐释.如在讲解随机过程的自相关函数和功率谱密度时,重点讲解它们各自的含义,相互之间的关系(维纳-辛钦定理),以及在随机信号和系统的时域和频域分析中的地位,帮助学生由确定性信号与系统的分析顺利过渡到随机信号与系统的分析,建立一以贯之的信号与系统分析理念.
在第2阶段的现代数字信号典型处理算法的学习阶段,针对来自不同专业学生的知识结构,适当补充部分经典数字信号处理、检测与估值理论方面的知识基础,然后再进入核心内容的教学.对于经典数字信号处理部分,主要补充了离散傅里叶变换及其性质、频域分辨率和谱图表示、频域分析、频域滤波等内容;对于信号检测和估值理论部分,主要补充了估计子性能、Fisher信息与Cramer-Rao界、Bayes估计、最大似然估计、线性均方估计、最小二乘估计等参数估计理论方面的内容.
通过对课程体系进行有针对性的局部调整,有效弥合了课程内容与学生基础参差不齐的鸿沟,同时将学生学习的重点放在物理概念的理解上,使学生能够更好、更容易地理解课程内容,掌握相关理论和技术.
2. 课程教学模式的设计
考虑到学生刚从本科阶段过渡到研究生阶段,部分学生的先期知识储备不够,且不少学生的研究方向与现代数字信号处理课程联系也不是那么紧密,在具体的教学实践中,采用讲授式和研讨式相结合的教学模式进行教学.
对于第1阶段的离散时间信号与系统、随机过程等基础理论部分,以及第2阶段补充的部分经典数字信号处理、检测与估值理论方面的知识内容,由于其主要目的是为后续内容的学习提供一些先期的知识储备,因此采用以教师讲授为主、学生自学为辅的方式进行教学,以便对教学内容的取舍、详略能够较好地进行处理.
对于第2阶段的现代数字信号处理的一些典型算法,主要选取了现代谱估计、自适应滤波、高阶统计分析和时频分析等四大模块的内容,并进一步将其分解为6个子模块,分别为:(1)现代谱估计之一:ARMA谱估计与系统辨识;(2)现代谱估计之二:最大熵谱估计与谐波恢复;(3)自适应滤波之一:Wiener滤波与Kalman滤波;(4)自适应滤波之二:LMS和RLS自适应滤波算法;(5)高阶统计分析;(6)时频分析.对于这一阶段的教学内容,采用以学生自学、讲解和讨论为主,而以教师点评为辅的方式进行教学.具体做法是:由3~4名学生自由组合形成一个团队,每个团队最多不超过5人,并推举一名团队负责人,从6个子模块中选择一个作为本团队的研讨专题.团队成员在教师指导、学懂弄通相关算法内容的基础上,通过文献查阅了解算法的提出背景及其典型应用场景,并将所选专题进一步分解为若干个子专题,由团队负责人组织团队成员开展集体备课,分工协作制作相应的专题研讨课件,每一名团队成员负责其中1~2个子专题的讲解,并牵头组织全班学生开展讨论.由于学生大多是初次登上教学讲台,其讲解难免会有不清楚甚或是遗漏的情况,因此在学生讲解的基础上教师再适当地加以总结和补充.此外,为使课堂讨论能够顺利进行,研讨气氛更为浓厚,教师可以抛砖引玉,并在关键环节适时地加以引导,进一步提升课堂教学效果.
通过前2个阶段知识内容的学习,学生已基本掌握了现代数字信号处理的基本理论和基本技术,尤其是对于各自所在团队的研讨专题所涉及的相关理论和相关算法.因此,对于第3阶段的现代数字信号处理技术的应用举例,仍然沿用第2阶段的团队分组和专题选择,且仍然采用以学生讲解和讨论为主,以教师点评为辅的教学方式.具体做法是:由团队成员共同协商,选择本团队选择的研讨专题中某一典型处理算法的典型应用场景,并选择一篇相应的来自中文核心以上期刊的中文或外文文献,利用MATLAB等软件平台,对论文算法进行再次重现,对算法性能和实验结果进行讨论和分析,并与论文实验结果进行比对;在此基础上,制作相应的汇报课件,并由团队负责人指定团队成员之一在课堂上对本团队的研究成果进行汇报,汇报过程中,团队成员共同接受老师和学生们的质询,最后由教师进行点评.
3. 课程考核方式的跟进与教学成效分析
3.1 课程考核方式的跟进
对于现代数字信号处理课程的考核,起初采用的是“平时成绩(含考勤、作业和课堂提问等)+算法仿真大作业成绩+期末考试”的考核方式,研讨式教学模式的引入,进一步丰富了课程的考核维度,为全过程考核提供了可能.
在继承原有考核方式的基础上,将第2阶段各团队的集体备课质量、研讨课件的制作水平、内容讲解的清晰程度、研讨氛围的热烈程度,以及个人的口头表达能力等一并纳入平时成绩的评定考核范畴.对于算法仿真大作业,则重点考查各团队第3阶段典型处理算法的典型应用场景举例的算法再现、成果汇报等的工作质量.同时,针对第2阶段的各研讨专题,任课教师各布置2~3个典型处理算法的计算机仿真大作业,各团队成员可自由选择完成本团队研讨专题之外的其他专题的3个算法仿真大作业,通过计算机编程,进行算法仿真和分析,并提交算法仿真实验报告,作为算法仿真大作业的成绩评定依据.对于期末考核,仍然保留了期末考试的考核方式,但降低了期末考试成绩占总成绩的比重,将其比重由70%降为50%,其余50%比重中的20%放在了平时成绩,30%放在了算法仿真大作业,提高了综合能力的考核比重.
新的考核方式更加注重过程的考核,注重学生研究性学习能力的考核,能够更全面、更有效地对学生的学习效果进行评价,也更符合研究生教育对于研究型、创新型人才的培养要求.
3.2 课程教学成效的分析
2020级研究生是进行现代数字信号处理课程教学改革的首届学生,在2020级研究生中,共有17名学生选修了现代数字信号处理课程,其中控制科学与工程专业学术型硕士研究生10人,电子信息专业学位硕士研究生7人.经过学情调研了解到,选课学生中,本科计算机科学与技术专业背景有6人,电气工程及其自动化专业背景有3人,电子科学与技术专业背景有1人,电子信息工程或通信工程专业背景有7人,其中有10名学生没有系统学习过现代数字信号处理课程所要求的一些先修课程,6名计算机专业背景的学生甚至连信号与系统课程的先修知识都没有.经过一个学期的努力学习,6名计算机专业背景的学生的课程考核成绩虽然总体上低于其他电气、电子或电子信息专业背景的学生,但他们的平时成绩、算法仿真大作业成绩和期末考试成绩也均在80分以上,能取得这样的成绩对于他们来说殊为不易;而4名电气和电子专业背景学生的成绩与7名电子信息专业背景的学生已不相上下,他们的平时成绩、算法仿真大作业成绩和期末考试成绩均在90分上下,这充分说明课程教学改革已取得了初步的成效,值得在后面的教学中继续坚守和进一步加以改进.
4. 结语
针对现代数字信号处理课程理论性强、学习难度大的课程特点,以及选课研究生学科专业背景差异大、先期知识掌握程度不一的实际,从课程内容体系的调整、课程教学模式的设计和课程考核方式的跟进3个方面对现代数字信号处理课程进行了研讨式教学改革探索和实践.通过教学实践来看,本课程的教学改革已取得了初步的成效,不同专业背景的学生都在课程的教学改革中受益,他们不仅在一定程度上克服了对本课程学习的畏难情绪,而且在研讨式学习实践中逐步建立了对学好本课程的信心,提高了学习的主动性和积极性,并在后续的科研实践中表现出较强的研究性学习能力.
教学改革永无止境,在后续的教学实践中,将对本课程的教学设计进一步进行完善,思考如何将现代数字信号处理课程与选课学生的专业背景更好地进行结合,剖析更多体现专业特色的工程实践案例,将它们有机融入到课程的研讨教学中来,进一步提高课程的教学质量.
参考文献:
[1] 国务院学位委员会第七届学科评议组.学术学位研究生核心课程指南(二)(试行)[M].北京:高等教育出版社,2020.
[2] 全国专业学位研究教育指导委员会.专业学位研究生核心课程指南(一)(试行)[M].北京:高等教育出版社,2020.
[3] 王兆晖.研究生“数字信号处理”课程教学方法的探索与实践[J].工业和信息化教育,2017(8):37-41.
[4] 王秋生,袁海文,崔勇.《现代数字信号处理》的教学研究与实践[J].北京航空航天大学学报(社会科学版),2009,22(4):4.
[5] 林剑辉.林业院校工科《现代数字信号处理》课程的教学改革探索[J].教育教学论坛,2017(52):75-76.
[6] 张培玲,李辉,张中卫.研究生《现代信号处理》课程教学改革与实践[J].当代教育实践与教学研究,2019(8):180,188.
[7] 李娟.研讨式教学的探索与研究:一个文献综述[J].大学教育,2017(12):15-18,46.
[8] 胡小桃.让研讨式教学焕发出更强的生命力[J].湖南师范大学教育科学学报,2002,1(3):98-101.
[9] 范一强,张懿奕.研讨式教学学生学业评价策略探析[J].高教学刊,2022,8(3):82-85.
[10] 刘志宏,王祥科,王菖.研讨式教学在“计算智能”研究生课程中的教学探索[J].科教导刊,2021(19):130-133.
[11] 陈凯泉,高蕾,孟祥红.高校混合式教学中的线上学习路径挖掘及对教学改革的启示:以某大学《生物化学》课程为例[J].高教探索,2020(5):5-13.
[12] 包长春,马树青,张振慧,等.声呐信号处理课程研讨式教学研究[J].现代职业教育,2016(19):153-155.
本文原载于《高师理科学刊》2022年第7期
相关问答
语音信号处理方面的论文好发吗?
发表关于语音信号处理的论文是否容易,取决于多个因素,包括但不限于论文的质量、期刊的选择以及领域的竞争程度。一般来说,语音信号处理是一个有一定难度的领域...
求一段话的翻译(信号论文里的)Thiscontrastswiththetime-dom...
[最佳回答]这有悖于[5]中时域合成分析所提出的理论,即,对部分观察单位的估算,是通过彻底检索与信号帧及其相关的正弦曲线实现的;当找到最大相关的正弦信号时,...
...系统也面临着更高的要求.数字基带信号的传输是数字通_作业帮
[最佳回答]Unceasingenhancementwhichalongwiththecomputertechnology,thenetworking,communication'sra...
压电传感器信号处理电路的研究设计,毕业论文,谁会?
放大和滤波自己简单做就行了。SC0073动态微压传感器是一种高性能、低成本的压电式小型压力传感器,采用压电薄膜作为换能材料,动态压力信号通过薄膜变成电荷量,...
为什么湖北新增病例突增14840例?临床诊断病例是什么?
今天很多网友都在咨询我这样两个问题,湖北新增的确诊病例突然增多了15111,为什么?很多人说是因为使用了临床诊断病例标准,这又是什么?首先要解释为什么突然...
有哪些功能强大的小众app推荐?
掏心推荐几款本人装机必备的手机应用,相对小众,实用性极高。适配iOS15,iPhone13可用~首推第一款1、「我的桌面」支持系统:iOS桌面美化工具,功能强大,亮...怎...
单片机的毕业论文怎么写?
电流、电压和电阻的最终测量信号都在单片机的控制下由12位A/D转换器TLC2543进行采集,采集的信号经单片机数据处理后通过LCD(12864)显示出来,测量结果还可以由...
信号与信息处理的应用领域以及发展趋势
根据美国的权威资讯公司统计,目前可编程DSP在市场上的使用情况如下:.通信占56.1%;.计算机占21.16%;.消费电子和自动控制占10.69%;.军事/航空占4...
东北大学,西北大学,西南大学,东华大学,中北大学,江南大学,长安大学咋排?
简介一点儿我所了解的东北大学秦皇岛分校,与大家分享:在所有985分校、由分校改名而来的校区、分校区、新建校区(非985校本部院系整体搬迁过去的)中,东北大...
什么是信息数字化?
信息数字化是将各种形式的信息(如文字、图像、声音、视频等)通过数字化技术转化为数字信号的过程。数字信号是由一系列由0和1组成的数字编码表示的信息,它...